ENH : add property to return the number of columns
Merge pull request #48 from tacaswell/add_ncols

ENH : add property to return the number of columns
ENH : add prototype of extendable pims object

This should not stay here long term, should move upstream to
PIMS, just here for rapid prototyping
MNT : rename internal function

_lookup_non_scalar -> _listify_output
MNT : removed unused imports
MNT : simplified get_row internals

 - now using _listify_output instead of duplicating logic
MNT : more re-factoring of guts of DM

All logic for filling auxiliary data structures now lives in add_column
alone.

Logic for setting up empty data structures lives in both `__init__` and
`recreate_columns` mostly for documentation reasons (and to preserve the
ability to make this class slotted).
MNT : refactored get_column to use _listify_output
BUG : make a copy of data_dict in append_data

The input dict is mutated, make a shallow copy to avoid
side effects.
TST : added test of creating empty DM
MNT : renamed internal function

_drop_frames -> _drop_data
ENH : added option to use PIMS frame store for 2D

 - added new kwarg to `__init__ `use_pims_fs` which controls
   if 2D data is special cased to a different data structure than
   generic non-scalar data
 - allows for filename to be passed in as column data and handled in
   transparent way
 - updated tests
 - minor style changes to simplify code