Bcolz loads into memory

If a result is less than a gigabyte then just shove it into a numpy array (which will, in turn, shove things into `DataFrame`s if necessary).

cc @jreback @cpcloud 

Builds off of #721.  So this PR should become a lot simpler once that's merged.
right

to guess what I am describing is the notion of the Engine