Remove logging.
Externalize list of files/directories to ignore.
Add support for "**" operator, "/" prefix and "/" suffix.
Code refactoring.
Add back "AsParallel".
Trivial changes.
Optimize path name matching with wildcard.

* Reject path that can't match in a pre-pass.
Normalize all path and pattern to use "\" as directory separator.

* Consumers are supposed to replace "/" with "\\" before calling.
Improve performance of filename pattern matching.
Optimize matching on "*.xxx" patterns.
Use "textfiles.include" to figure out which files to index.
Code refactoring.
Improve performance of file name pattern matching.

* Performance is now back to (almost, within a few %) what it was when the patters were hard-coded in source code.
Try to fix the "selected" issue when reaching lazy node of a lazy expand collection.

* Not quite working: the node is selected, but doesn't have focus.
Start decreasing the # of allocations when collecting file system entries.

* # of strings
* # of Func (due to Linq)

Also support PROFILE_SERVER compile time option to enable starting the server externally for debugging (profiling) purposes.
Decrease # of string allocations when collecting file system entries.
Decrease # of memory allocations.
Decrease # of allocations.
Decrease # of string allocations.

* From 2.4 mil to 800,000: use native win32 calls instead of .net wrappers.
Decrease # of allocations by listing directories/files in one call.