Graying out unused declarations

I think it's better to make `ILexer` an abstract class `[<AbstractClass>] type Lexer() = ...` so that we can move `GetSymbolAtLocation` to the class declaration.