Currently we have a specific implementation for `BooleanArray` (bit-packing), but due to the `ArrowPrimitiveType` trait which we use as a trait bound in many places `PrimitiveArray<bool>` is still a valid type. `make_array` actually uses `PrimitiveArray<bool>` which may be a bug but would be fixed by this issue anyway.
I propose move the implementation of `BooleanArray` into `PrimitiveArray<bool>`, this would allow us to use the `ArrayPrimitiveType` trait as a bound more consistently. i.e. `PrimitiveArrayBuilder<T>` could return `PrimitiveArray<T>` instead of having a separate `BooleanArrayBuilder`.