Add ToBoolSlice()

Fixes #1
diff --git a/cast.go b/cast.go
index de5a686..6ca3e0e 100644
--- a/cast.go
+++ b/cast.go
@@ -67,6 +67,11 @@
 	return v
 }
 
+func ToBoolSlice(i interface{}) []bool {
+	v, _ := ToBoolSliceE(i)
+	return v
+}
+
 func ToStringSlice(i interface{}) []string {
 	v, _ := ToStringSliceE(i)
 	return v
diff --git a/cast_test.go b/cast_test.go
index fa1ea23..8f6d40b 100644
--- a/cast_test.go
+++ b/cast_test.go
@@ -141,6 +141,10 @@
 	assert.Equal(t, []int{1, 3}, ToIntSlice([]interface{}{1.2, 3.2}))
 	assert.Equal(t, []int{2, 3}, ToIntSlice([]string{"2", "3"}))
 	assert.Equal(t, []int{2, 3}, ToIntSlice([2]string{"2", "3"}))
+	assert.Equal(t, []bool{true, false, true}, ToBoolSlice([]bool{true, false, true}))
+	assert.Equal(t, []bool{true, false, true}, ToBoolSlice([]interface{}{true, false, true}))
+	assert.Equal(t, []bool{true, false, true}, ToBoolSlice([]int{1,0,1}))
+	assert.Equal(t, []bool{true, false, true}, ToBoolSlice([]string{"true","false","true"}))
 }
 
 func TestToBool(t *testing.T) {
diff --git a/caste.go b/caste.go
index 9475ca7..38d03de 100644
--- a/caste.go
+++ b/caste.go
@@ -422,6 +422,38 @@
 	}
 }
 
+// ToBoolSliceE casts an empty interface to a []bool.
+func ToBoolSliceE(i interface{}) ([]bool, error) {
+	jww.DEBUG.Println("ToBoolSliceE called on type:", reflect.TypeOf(i))
+
+	if i == nil {
+		return []bool{}, fmt.Errorf("Unable to Cast %#v to []bool", i)
+	}
+
+	switch v := i.(type) {
+	case []bool:
+		return v, nil
+	}
+
+	kind := reflect.TypeOf(i).Kind()
+	switch kind {
+	case reflect.Slice, reflect.Array:
+		s := reflect.ValueOf(i)
+		a := make([]bool, s.Len())
+		for j := 0; j < s.Len(); j++ {
+			val, err := ToBoolE(s.Index(j).Interface())
+			if err != nil {
+				return []bool{}, fmt.Errorf("Unable to Cast %#v to []bool", i)
+			}
+			a[j] = val
+		}
+		return a, nil
+	default:
+		return []bool{}, fmt.Errorf("Unable to Cast %#v to []bool", i)
+	}
+}
+
+
 // ToStringSliceE casts an empty interface to a []string.
 func ToStringSliceE(i interface{}) ([]string, error) {
 	jww.TRACE.Println("ToStringSliceE called on type:", reflect.TypeOf(i))