use the generic _write function in localstorage.write()
fix localstoragetests to work with refactored http-api
add test for thw storage.write() function to unittests
refactor the tests into separate files

central to all is the test_common module that
provides functions to create files and users to test
and to populate the backends.

there are:
storage_interface_tests: defining the interface of the storage layer
storage_integration_tests: testing thw whole stack for the storage
  functionality from an http client point of view
register_integration_tests: client-like testing for the registering
  functions

The tests have just been restructured, no new things have been added.
The storage integration tests have been refactored to use the
resource object just like the storage interface tests --
no semantic changes.

Also changed the .travis.yml to run the new test set.
add a gimmick to suppress irods output in terminals

add a wrapper around the irods.clientLogin*() function
to slience it.
This makes for nicer output of test runs and interactive runs.

This is dones by a hack to redirect stdout and stderr to devnull
when calling this function and putting them back afterwards.

Since it's only used when setting up connections, and we
cache connections, it should not affect performance much.
save the _create_dirlist_gen function from known exceptions

this function calls metadata.stat, which can throw
MalformedPathException and NotFoundException -- these let
the create_dirlist function fail, if one or more items
are not accessible.

We replace it with a new function cdmi._safe_stat, which
catches these two exceptions and just returns empty results
then.

This way we get a complete list even with some inaccessible
folders (they just don't have any detailed information).
fix the check_path function in localstorage to accept '/'

the check with os.path.normpath would fail for '/', because
normpath does not transform it to '' (which is good).
Because it removes the trailing slash for everything else,
we had a switch that compares only path[:-1] to the normpath
result if the last char was a '/'.
Now the case is:
  remove last char if '/' and if len path > 1
add an experimental version of a strict connection limit

Until now we created more irods connection if necessary, but
only kept n alive after the request.
Now we limit it to n.

This patch adds:
- an account for used connections implemented as a set
- making the get() call blocking

It's experimental, because:
- the blocking call does not have a timeout and may hang
  the server
- the remove call from the used connection set may throw
  an exception if the accounting went wrong and we try to
  remove a connection that doesn't exist
fix experimental irods connection limit timeout

When the connection setup failed (__create_connection
returned None), the connection would still be added to
the used connection set.
It would then never be removed, the next try to retrieve
a connection would hang.

Fix this with if conn is not None:
add more debugging messages to irods storage
fix the irods connection reuse; more debug messages

irods connections were not reused, because we forced
creating a new connection whenever the used connections
are 0. It should be only when the available connections,
the ones in the applicable user pool, are 0.

add more debug messages and display the current sizes
of a user pool and of the usedconnections set in the
debug messages.
refactor the use of irods connections

this patch changes:
1. the use of multiple connections in one request is now safe
2. irods connection do not make use of the g object,
  the request stack
3. we do not need a teardown_request function anymore

This changes the way irods connections are handled.
The authenticate function no longer puts a connection on the g stack,
but stores it in the connection pool. The rest of the API functions
take it from there, and can also initiate the creation of more
connections, if necessary.
remove debug message that will always fail

we cannot access the request context in the
ConnectionPool destructor
fix irods write(): add missing get_connection decorator
make sure removing a connection from used does not fail

change the method from set.remove to set.discard, which
does not fail if the item to remove is not present.
Merge pull request #55 from mhellmic/connection_reuse

Connection reuse