Overload KeepColumns, option for throwOnMissing

Overload the MutableTable.KeepColumns method to allow the user to
specify whether or not the function should throw an exception when a
column in the list is missing.

The logic of the function is refactored to avoid setting the Column
array until all columns are set, since it is not known ahead of time
how many will match.

Supporting unit tests are also added.
Merge pull request #27 from yellis/KeepColumns

Overload KeepColumns, option for throwOnMissing