Emitter: Track assignability. Tests added, and fixes #71.

The emitter previous allowed silly things like assigning to the result of
a function call. This made no sense, because the assignment would be
targetting a storage, and therefore have no affect on anything. I also fixed
this because it was such an easy thing to do!

A couple tests were added to pre-commit-hook.py to make sure this doesn't
become an issue again.