Added ref type parameter, `compact` to PooledDataFrame

* Allows the user to specify the reference type for PooledDataArrays
  (default is still Uint16)
* Added `compact` to take an existing PooledDataArray and change the
  reference type to the smallest size possible.  Returns the same
  PooledDataArray if nothing has changed, and a new one if the size
  is reduced
* Added RefType to distinguish refs arrays from normal arrays during PooledDataArray construction
Fix reftype conversion in compact
Added ref type parameter, `compact` to PooledDataFrame

* Allows the user to specify the reference type for PooledDataArrays
  (default is still Uint16)
* Added `compact` to take an existing PooledDataArray and change the
  reference type to the smallest size possible.  Returns the same
  PooledDataArray if nothing has changed, and a new one if the size
  is reduced
* Added RefType to distinguish refs arrays from normal arrays during PooledDataArray construction
Fix reftype conversion in compact
PooledDataArray updates:

* Added push!, pop!, shift!, unshift!
* For ref types of bit size 8 or 16, add overflow check
PooledDataArrays: added empty constructor, some docs
Merge
Merge the pooled_ref_parameterization branch
An attempt to get PooledDataArray(falses(3)) working

I always end up with the error
```julia
julia> PooledDataArray(falses(3))
ERROR: in PooledDataArray: a not defined
 in PooledDataArray at /home/bates/.julia/DataFrames/src/pooleddataarray.jl:110
julia> which(PooledDataArray,falses(3))
PooledDataArray{N}(d::BitArray{N}) at /home/bates/.julia/DataFrames/src/pooleddataarray.jl:110
```
and I believe that the next call should be
```julia
julia> PooledDataArray(bitunpack(falses(3)), falses(size(falses(3))), Uint8)
3-element Bool PooledDataArray:
 false
 false
 false
```
which gives the desired result.