ARROW-3540: [Rust] Incorporate BooleanArray into PrimitiveArray
ARROW-3540: [Rust] Incorporate BooleanArray into PrimitiveArray

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 PR anyway.

This PR moves 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`.

cc @kszucs @sunchao @andygrove @crepererum

Author: Paddy Horan <paddyhoran@hotmail.com>

Closes #2778 from paddyhoran/bool_array_updates and squashes the following commits:

467e65f2 <Paddy Horan> Incorporated `BooleanArray` into `PrimitiveArray`

pcmoritz/arrow,xhochy/arrow,laurentgo/arrow,tebeka/arrow,pcmoritz/arrow,renesugar/arrow,majetideepak/arrow,laurentgo/arrow,cpcloud/arrow,wesm/arrow,renesugar/arrow,xhochy/arrow,laurentgo/arrow,apache/arrow,apache/arrow,laurentgo/arrow,cpcloud/arrow,itaiin/arrow,kou/arrow,tebeka/arrow,kou/arrow,cpcloud/arrow,pcmoritz/arrow,tebeka/arrow,renesugar/arrow,xhochy/arrow,majetideepak/arrow,apache/arrow,majetideepak/arrow,apache/arrow,renesugar/arrow,wesm/arrow,renesugar/arrow,apache/arrow,itaiin/arrow,kou/arrow,majetideepak/arrow,itaiin/arrow,icexelloss/arrow,itaiin/arrow,xhochy/arrow,laurentgo/arrow,renesugar/arrow,pcmoritz/arrow,laurentgo/arrow,renesugar/arrow,kou/arrow,pcmoritz/arrow,icexelloss/arrow,itaiin/arrow,majetideepak/arrow,majetideepak/arrow,xhochy/arrow,icexelloss/arrow,wesm/arrow,cpcloud/arrow,renesugar/arrow,apache/arrow,tebeka/arrow,kou/arrow,wesm/arrow,pcmoritz/arrow,apache/arrow,pcmoritz/arrow,renesugar/arrow,wesm/arrow,icexelloss/arrow,itaiin/arrow,itaiin/arrow,cpcloud/arrow,kou/arrow,tebeka/arrow,majetideepak/arrow,itaiin/arrow,icexelloss/arrow,tebeka/arrow,renesugar/arrow,apache/arrow,wesm/arrow,cpcloud/arrow,pcmoritz/arrow,xhochy/arrow,majetideepak/arrow,renesugar/arrow,pcmoritz/arrow,icexelloss/arrow,pcmoritz/arrow,cpcloud/arrow,majetideepak/arrow,kou/arrow,laurentgo/arrow,xhochy/arrow,laurentgo/arrow,xhochy/arrow,wesm/arrow,wesm/arrow,icexelloss/arrow,itaiin/arrow,laurentgo/arrow,majetideepak/arrow,cpcloud/arrow,itaiin/arrow,renesugar/arrow,laurentgo/arrow,icexelloss/arrow,wesm/arrow,xhochy/arrow,pcmoritz/arrow,icexelloss/arrow,apache/arrow,renesugar/arrow,xhochy/arrow,majetideepak/arrow,kou/arrow,majetideepak/arrow,tebeka/arrow,cpcloud/arrow,icexelloss/arrow,apache/arrow,renesugar/arrow,laurentgo/arrow,xhochy/arrow,icexelloss/arrow,kou/arrow,majetideepak/arrow,tebeka/arrow,pcmoritz/arrow,kou/arrow,cpcloud/arrow,kou/arrow,pcmoritz/arrow,wesm/arrow,xhochy/arrow,apache/arrow,tebeka/arrow,itaiin/arrow,kou/arrow,icexelloss/arrow,laurentgo/arrow,tebeka/arrow,laurentgo/arrow,kou/arrow,wesm/arrow,pcmoritz/arrow,itaiin/arrow,cpcloud/arrow,cpcloud/arrow,itaiin/arrow,wesm/arrow,cpcloud/arrow,apache/arrow,laurentgo/arrow,itaiin/arrow,majetideepak/arrow,xhochy/arrow,majetideepak/arrow,icexelloss/arrow,apache/arrow,xhochy/arrow,kou/arrow,cpcloud/arrow,laurentgo/arrow,apache/arrow,renesugar/arrow,icexelloss/arrow,itaiin/arrow,pcmoritz/arrow,wesm/arrow,wesm/arrow,xhochy/arrow