workaround for tinkergraph database be open by multiple processes
guard FileRefDatabase from trying to resolve directories as refs
Allow a repository to be used by multiple processes concurrently.

A new Hints class contains flags to indicate whether the object and staging databases,
as well as remote repositories, should be open in read-only mode. It is injected
through Guice on the components that can make use of them.

CLI commands can easily state how they operate on those components by using the
following annotations:
 - @ReadOnly: purely read only command (e.g. diff, cat, show)
 - @ObjectDatabaseReadOnly: command modifies the staging area but not the
                            object db (e.g. add, clean, remove)
 - @StagingDatabaseReadOnly: command modifies the object db but not the
                            staging area (e.g. clone, pull, tag)
 - @RemotesReadOnly: command uses remote repositories but only for reading (e.g. fetch, pull)

The CLI application now opens and closes the repository on each command, locking
the databases for write access on a command by command basis as needed, and hence
allowing multiple processes to run read only commands concurrently, and failing to
execute write commands if another process is locking the dbs for write access.

The functional tests are adapted to handle test data setup by acquiring a disconnected
read-write GeoGIT instance from the cli whenever needed and closing it when done setting
up the test scenario.

Also a lot of code duplication was removed from functional tests as different packages
had duplicated step definitions. They now use the Cucumber "glue" option to indicate
where to look for step definitions.
Remove ini4j dependency from tests.

Also remove duplicated code between IniPGProperties, IniOracleProperties, IniSQLServerProperties,
and IniMongoProperties by introducing a base superclass OnlineTestProperties.
Make shp export use the current working dir from Platform when given a relative path.

This avoids the functional test leaving dangling shape files in the project
folder that then can be committed by mistake.
Fix shp export functional test definition.

The 'Try exporting an inexistent feature type' scenario in ShpExport.feature was working
by accident because previous scenarios were leaving Poinst.shp in the project folder, but
the test definition had the wrong expectation.
Merge remote-tracking branch 'origin/pr/592'
Added serve command to the CLI.

Adds ability to start up the embedded server to serve a repository through the
web api.
Merge pull request #595 from jdeolive/cli-serve-cmd

Added serve command to the CLI.
make sure clone and fetch close the remote repo
Merge branch 'master' into command_hints

Conflicts:
	src/cli/src/main/java/org/geogit/cli/CLIInjectorBuilder.java
	src/cli/src/main/java/org/geogit/cli/GeogitCLI.java
	src/geotools/src/test/java/org/geogit/geotools/cli/test/functional/IniOracleProperties.java
Update the scm URL's and deploying repo in the root pom to point to boundlessgeo.com instead of opengeo.org
Workaround for cli command proxies to work with --help
Avoid ClassCastExceptions in IniFileConfigDatabase.get(...).

Lacking a better tool to convert from String to the desired output type,
made it so it "manually" converts to the known types config options
are saved as.
Merge remote-tracking branch 'origin/pr/593'
Merge branch 'master' into remove_type_from_ref

Conflicts:
	src/core/src/main/java/org/geogit/api/plumbing/RefParse.java