re-implement dataset in terms of protocols
add column-major implementation
add matrix wrapper dataset
simplify; add matrix protocol
"columns" returns map of columns

"columns" returns map of columns
column order doesn't matter for equality
doc strings
add unit tests for dataset protocols