Plus a little bit of a cleanup. There's a little bit of duplication
caused by this, but I think the clarity is worth it. Really do need a
better way of handling actions.
[SVN r75265]
Symbol tables are really expensive to create, so share between all
instances of `cpp_highlight` and `python_highlight`. It would be better
to create all the grammars just once, but that's trickier as they're quite
stateful and they're not nearly as expensive as the symbol tables.
[SVN r75254]
Files are now permanently loaded. Quickbook substrings are stored as
references into the file. Now positions are stored as iterators into
the original file, the line and column is calculated when messages are
output.
This doesn't have much effect on efficiency but it simplifies a few
things.
[SVN r75253]