Allow for ssh and https protocols for github locations.

`cookbook 'bacon', github: 'meat/bacon'` would always return a `git://` URL regardless of the value of the `protocol` option, which doesn't work for private github repos as one might expect and as documented on http://berkshelf.com.

This change adds a spec for the generic github location plus code and specs for `ssh://` and `https://` protocols.

I had started this change by adding a case statement for the different expected protocols, but I figured using proper URI handling makes more sense, especially if the need arises to change with userinfo in future.