emitter: Put all o_build_* stuff into new write_build_op.

There were two areas using o_build_list, and one area using o_build_hash. These
three places used near-identical code. This removes that in favor of one call
that takes a fair number of params.

This moves all build stuff into one place, which is very nice.
emitter: try_get_storage -> get_storage. More cruft removal.

Every call of try_get_storage was having to check for failure and then to see if
it needed to raise nomem. No more. get_storage will now never return a NULL
storage, and raise nomem if that's needed. This removes a bunch of duplicate
potential-raising code from a lot of different parts of the emitter. Good
riddance.
emitter: Oops, formatting fix for last commit.
symtab: Properly tag hashes that can be circular as such.
Hashes are now properly marked and collected by the gc.
Hash values can default to object now. Fixes GH #13.

I also fixed some an issue where hash values being an object could result in the
object value being unset.

Fixed another issue where lily_value's hash deref wasn't setting
hash_value->gc_entry->value.generic to NULL when the hash was at 0 refs. This is
done by list (and now by hash) to prevent the gc from looking at values that
have been deref'd normally.

Added a couple of tests to sanity.ly which also pass.