Incorporate the experiment by Don

Currently there are 26 failed tests
Move token stream matching to a separate module
Some simple refactorings on CodePrinter module

Lessons learned:

1. Remove superficial inline
2. Define functions on attributes to be compatible with others
3. /// comments only applied for let bindings or type elements
Modify the formatting of if/then/else

The default form of if/then/else now is
if cond then
expr
else
expr

The changes caused by preserveBreakNln haven't been corrected in test
cases yet. We might need to go back to the source and look for comments
before inserting a new break here.
Refactor to use CodeMatcher module inside CodeFormatter

Changing printfn to Debug.WriteLine to avoid performance hits
Simple changes on CodeMatcher

1. Reindent a few long lines
2. Remove unused params on tokenize
Remove the last EOL which is not necessary

Remove unused vars which cause warnings
Add comment lookup from sources
Use comment lookup to break one-liner expressions having preceding comments

Tests are modified accordingly.
Looking up based on range only is not good enough.
Rename CodeMatcher to TokenMatcher

Now as usual, there are there failing tests
Accept whitespaces inside an comment chunk

We might need to normalize whitespaces before emitting
Create a few test cases from CodeFormatter script
Use one new line between two comment chunks
Remove unused range parameters

Now 151 tests passed and 3 failed
Major refactoring on CodeFormatter

1. Ensure all code paths covering integrateComments
2. Create a function for each duplicated code fragment
3. Use better string replacement functions
4. Rename vars and normalize comments to //
Some other changes on CodeFormatter
Line comments are now indented properly

This is ensured by treating delimiters as whitespaces
Skip attributes in the old and new text

Any comment inside attributes will be omitted.
Only emit elif if the source says so
Compensate for missing '|' token

We should find out other delimiters to be treated in the same way