- Reordered some cases and members so they're grouped in a way which makes more sense.
- Removed the Empty and Character cases from Regex -- they were just special cases of CharacterSet, so we use that instead now.
- Implemented active patterns that allow Empty and Character patterns to still be used within our code (the active patterns work on top of the CharacterSet case).
- Moved the Unicode module into its own file so it can be used from within the backends.
- Modified the DFA compilation code so we don't need to explicitly specify the "universe" of characters we're working with. This is similar to the Datalog notion of "domain independence", and it fixes the problem where negated patterns caused fsharplex to emit transitions for many additional (i.e., unnecessary) characters.
- Fixed the Unicode part of the fslex-compatible backend so it emits the entries for the individual Unicode characters and the Unicode categories.
- Fixed compilation of the "any" pattern in lexer definitions -- it should match anything *except* newlines.
- Enable the graph backend for now so we can work out an issue with the compilation of the Any patterns.
- Fixed a reversed condition -- caused ASCII characters to be emitted twice (once as normal, and again as Unicode characters).
- Switch back to the fslex-compatible backend.
- Fixed some small canonicalization bugs which caused certain Regex cases not to be in canonical form (thereby causing unnecessary DFA states to be created).
- Implemented code to compile the Repetition case of Pattern.
Merge branch 'master' of github.com:jack-pappas/fsharp-tools

Conflicts:
	FSharpLex/Compile.fs