Broke up chunks and fixed super and subscripts

Chunks used to just be series of characters that we didn't really
deal with in any other places.  Now they are parsed into different
classifications (though they all end up as a Chunk).

numericChunk: /-?[0-9.]+/
    Anything that could look like a number.
characterChunk: /[a-zA-Z]+/
    Anything that looks like text / variables.
symbolicChunk: /[^()!:;,/_\ ^a-zA-Z0-9]+/
    Anything that isn't being used by our language and
    isn't a numeric or character chunk.

This distinction is useful because it means that
  a+b/c
gets parsed as 'a' + ('b'/'c') instead of ('a'+'b')/'c'

Sub/super Scripts were getting really confused because they would
always interpret
  a_1 / 2
as
  a_(1/2)
no matter what the presidense of the two operators is.

This change makes it so that a sub/super script can not contain
an un-parenthated division or sub/super script as the argument.