Leaner and meaner

Closes #28, closes #29, starts on #43, #30, #31, and #13.

Well, making substitutions better only made it a second faster, but the code's a bit more elegant!

Be warned: lots of changes below. Should still work on your computer, but give it a test.

You'll probably want to fix the *-imports...I left them because I don't much like internal_utils.py, and think its functionality should somehow be folded into a class structure.

A lot of the changes to the GP class take advantage of the fact that it looks a heck of a lot like a posynomial when stored. Currently the PosyTuple class acts as a bit of a 'save' feature for a GP, which I think could be extended usefully...right now I just use it to preserve state before/after a sweep.
Actually using math.exp, to avoid numpy dependency here. Probably not necessary.