Improved implementation of RowNames and ColNames

- previously the only way to set this was through Make overload with
rowNames/colNames
- now RowNames/ColNames property has a setter.  So row/col names can be
set when calling Make or after the fact
- Improved corner case handling
- Lots of tests written
- Each Make method that takes an IEnumerable now has a placeholder names
parameter to enable setting vector names.  Will complete feature in next
commit