several BitArray improvements

. make length() faster by storing the length
  . this speeds up bounds checks a lot
. check that BitArray{N} is constructed with N dims
. avoid allocating dim vector for 1-d BitArrays
. fix 0-d BitArrays
. make BitArray(dims) better typed
. faster size(::BitArray, d)