Allow that TarUtils.FileCatcher can throw IOException
Add Puppet Forge v3 API
Merge branch 'dev' into forge-v3-api
Fix module name deserialization issue when owner is missing
Add downloads attribute to API v2 Module entity
Use String.intern() on owner and name
Ensure that parameters, providers, and properties are empty lists

The metadata should reflect empty lists rather than null for list
entries that contain no data. This became very important in the
v3 API where nulls are serialized.
Enable use of separate Gson for the v3 API

The v3 API must serialize nulls and uses a different date format
than v2 so a separate binding for a v3 Gson instance was added.
Introduce @Nullable for optional injections

The Plexus injection framework (used by Nexus) does not allow null
values on injected attributes even though they are marked as optional.
They must have a @Nullable annotation. It's irrelevant in what
package that annotation is declared as long as its name is @Nullable.

This commit provides a @Nullable annotation in the
c.p.g.commons.annotations package. Trying to find one in a supported
package turned out to be difficult and prone to introduce conflicts.

The commit also removes the previously introduced dependency to
findbugs (since it indeed introduced "package use" conflicts).
Bind singleton GsonBuilder instances
Merge branch 'dev' into forge-v3-api
Refactor Forge API services into interface/implementation split
Make versions use flyweight pattern
Using fromString/create static methods for creating ModuleName
Merge branch 'dev' of git@github.com:puppetlabs/geppetto.git into forge-v3-api
Adding user details to the v3 abbrev. module.
Fix glitch in PaginatedResult.getNext()
Add ability to resolve relative URL's in forge v3 protocol
Use fixed versions for xtext maven resolution to avoid SNAPSHOTs
Merge remote-tracking branch 'origin/dev' into forge-v3-api