Fix vec4::rotate_elems
Allow reserve to pass arguments to constructor.
Add ref_counter.cc/hh (snow::ref_counter_t).

Just a basic reference counting structure -- handles reference counts
for arbitrary pointers. This should generally be a hidden part of some
larger class that forwards retain/release calls, since release always
takes a finalizer function (useful, for example, if you don't want to
actually delete an object but just send it back to a pool of objects).

By default, all pointers have a reference count of 1. Once an object
has been released and finalized, its pointer should be considered
invalid. It will not zero the original pointer. Calls to retain/release
on invalid pointers will still work because the counter doesn't keep
track of which pointers are valid or invalid, obviously.

So, use with caution and always balance your retain/release calls.

May later provide an autorelease-pool that interacts with one of these,
but it doesn't matter all that much.