Update existing variables upon assignments.

When re-assigning an existing variable the existing definition should be
re-used instead of overwritten. By keeping it around the original reference
amount as well as location information is kept in tact. In the future I'll
probably want to also store information about where a variable is re-assigned
but I'll leave that out for now.

This fixes #77.