Filter dependencies to lock after resolving
Store :tag, :branch, and :ref information separate from :revision

This commit fixes strange behavior where we treat refs, branches, and
tags as equals. In git land, they are. But in lockfile land, they are
not.
Don't save the lockfile on reduction