Treat branches, tags, refs, and revisions differently

I think this fixes #1034.

First, this PR makes it so that branches, tags, and refs are all treated as user-supplied data, whereas revision is a Berkshelf-calculated data. This is important for the lockfile trusting. 

Second, this PR changes the return value from the installer methods to include both the dependencies and the cookbooks. In #1034, the infinite loop was caused because the Berksfile dependency and the Lockfile dependency were both added to the graph (since one was Git and the other GitHub).