Parse decimal numbers [ply]

Numbers are now a series of digits, possibly with a . in the middle of
them. This parser doesn't accept inputs like "15." or ".15", which are
arguably valid input. Personally I figure it won't kill the user to type
a 0 once in a while.
Shut up, ply [ply]

PLY complains about having no t_error function defined. We don't need a
custom t_error; the LexErrors thrown by PLY are sufficient for our
purposes. I'm not sure why this is worth a warning, but it's annoying in
the tests.
Add support for negative numbers [ply]

This is a fairly simple change building on the two we already did:
numbers can now have an optional - in front of them, indicating
negation. So far, the extensions we've made to our grammar rules haven't
required any changes in the Calculator--they're all reflected in
Python's `float` method.
Now the parser can add two numbers [ply]

This is not quite the design recommended by the ply documentation, but I
think it's a nice clean design. The tokenizer returns the values
associated with each token, and the parser consumes those values. In
this case, the value associated with '+' happens to be a function of two
numbers, so that's what we'll return.