Add dedicated debug unit test projects
- Extract out common testing logic in SelectTests
- Add a FdoMemCheck helper class that will activate CRT memory leak checking when invoked, or do nothing when Visual Leak Detector is configured.
- Fix memory leaks found running the test suite. This is due to:
  - Incorrect order of calls in SWIG-generated Dispose() method, the parent Dispose() should be called first ensuring it will eventually get to the Dispose() of FdoIDisposable, where the underlying pointer is released.
  - %newobject directive has to be applied for every method that returns a pointer. This is not complete yet, we've only applied this directive for methods that are hit during the running of the test suite. There will undoubtedly be more leaks uncovered as we expand the test suite.