Allow reserved words in type queries.

Fixes #181.
The problem with optional is that it's not clear if all the callers are correct or not.  i.e. if a caller left off the parameter, did they do so because that was the right thing to do, or because they simply forgot (or weren't updated when the parameter was added).  

Making code explicit means that the reader can tell that the passing of 'false' was intentional, and didn't just slip through accidentally.  

Unfortunately, if hte parameter is optional, there's no way to tell when just looking at code, that a call in one location to a method is even missing the parameter (so it's hard to even realize form looking that there might be an issue).  For example, say there is another place in the code that *should* have been allowing reserved words.  However, it was written using:

var x = parseEntityName();      rather than
var x = parseEntityName(/*allowReservedWords:*/ false);

The former is easy to glance over and not realize that there's a problem.  With the latter, it becomes much clearer to the reader what the semantics of that line is (without needing to understand the signature and semantics of the called method ahead of time).  The reader can then go "wait... they've explicitly said they don't want reserved words, but i know that's not quite right because of <such and such reason>."  

The accidental missing of parameters led to many bugs in the old codebase, and has been teh source of numerous bugs and perf issues in the roslyn codebase.  It buys no additional code quality or performance, and comes at the cost of readability and clarity.  In that case, it seems to be a net win to use required parameters instead of optional ones.