Moved code a bit to get rid of unnecessary classes.
Fixed  the bug causing SExprPath to wrap over when moving to end.
Changed Input<T> from abstract class to interface.

Now it can be implemented by structs, which might be more
efficient from a garbage collection point of view.
Started to convert S-expressions parsing to use the parser combinators.