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.
Fix TypeParse detection for decimal type

The TypeParse detection used in Utility.FlattenWorker threw a
System.Reflection.AmbiguousMatchException when being run on a decimal
property inside a custom class used in DataTable.New.FromEnumerable.
This was happening because there are two TryParse overloads for this
data type.

Modified the logic for this check to allow it to verify that any public
and static TryParse function exists for the given type.

Added unit test to verify that this is working for
DataTable.New.FromEnumerable with a class that has a decimal property,
related to #17.
Merge pull request #27 from yellis/KeepColumns

Overload KeepColumns, option for throwOnMissing
Verify that RowAs works well with decimals
Merge pull request #28 from yellis/FromEnumerable

Fix TypeParse detection for decimal type
Function to RemoveEmptyRows from MutableDataTable
Add unit test for RemoveEmptyRows()
Merge pull request #29 from yellis/RemoveEmptyRows

Function to RemoveEmptyRows from MutableDataTable