Completeness, coherence, basic uncertainty

Updated completeness and coherence to be slightly more comprehensive. Still need
to have a way of implementing the extended coherence condition.

Updated SemanticForm to have non-semantic arguments. (Improvements to
completeness/coherence corresponded mainly to this.)
basic inverse application code
Added lots of toStrings, and parsable inv-app

These toStrings should probably be moved into parser objects: it's nice to have
parsers that can go both ways (string -> obj, obj -> string).

We get a stack overflow on "John kissed" so it looks like there may be some sort
of bug with the implementation. ...Or, empty categories are just causing the
execution to nest itself ridiculously much in the parsing process. The next step
to solving this problem will probably involve a bunch of logging to try to
figure out what's going wrong.
Optimized Solution algorithm

Delayed on inside-out function application until the end of the solution
algorithm. This drastically sped it up! So now we are not getting any stack
overflows anymore and the test is kind of running in reasonable time. This also
had the effect of getting rid of the duplicate f-structures in the solution, but
that simply allows me to longer ignore the problem of not comparing f-structures
for equality as I really should.