ComplexLiteral now correctly uses pre/post strings

ComplexLiteral was setup to take the strings it should print
before and after a literal, when it outputs the code.
However they weren't being used, in the print method.

Now they are.
bugfix; terminal indexer was failing to include optional terminals

When terminals are indexed so that correct branches in the
parse tree can be predicted, the fact that some terminals are
optional, was not being taken into account.

This was due to it increasing the index, and then looking at
the current terminal, when it should have looked at the previous
one to counteract the increasing index.

tl;dr; I added '-1' to bruteScan