Added commit path filtering.

By adding a filter to commit you can commit only certain features or featureTypes. This is useful if you have a lot of changes but want to split them into several commits.
Optimized commit path filtering so that it doesn't create multiple trees.

Revised the way path filtering is handled so that it supports multiple paths for filtering.
Merge remote-tracking branch 'kelseyishmael/commitPathFilter' into commitPathFilter
Commands are public API, so guard their internal state when setting mutable arguments.