Include tests and contracts when parsing

Otherwise, code completion doesn't work when inside a test/contract.
Fix possible nil reference exception for tooltips

When creating a tooltip for a keyword, it was possible to get a nil
reference expcetion if the keyword did not have a description defined.

This only represented itself when compiling the addin with nil checks
enabled.
Relax contracts in methods for resolving text to nodes

The contracts were too strict and were being violated.  This was
causing unecessary exceptions to get thrown when the addin was
compiled and installed with contracts enabled.
Add general project options to GUI

Adds the ability to specify -main, -test-runner, and a backend argument
for specifying the win32icon.  -test-runner currently isn't hooked up.
In the
future, we'll want to connect that up with a menu command to run tests.