Separate implementation of VectorSubset

This fixes part of #48 with some extra foo.

`VectorSubset.h` not only contained the implementation of the `VectorSubset<V, M>` class, but also the implementation of all of the following classes:

1. `BoxSubset<V, M>`
2. `IntersectionSubset<V, M>`
3. `ConcatenationSubset<V, M>`
4. `DiscreteSubset<V, M>`

These four classes now have their own homes, with separated implementation and declaration code.

Lastly, I've added a test to bump up the code coverage.  All of the above four classes are now at 100% coverage.  `VectorSubset<V, M>` now sitting at 74%.