add a log meesages to irodsstorage stat

debug-output the number of items found in a directory
only get the objectID fromthe parent dir for cdmi output

before we did a stat on the parent dir, while we only needed the
objectID. now calling get_user_metadata and filter by objectID.
simplify the connection pool

remove the used_connections set() that was used nowhere
add stream generator function for whole-file reads only
change the default buffer size for incoming streams to 40MB

this buffer is used to write to the backend storage, which is either
local, (or on LAN in the irods case), so a large buffer should be fine.
irods seems to perform much better with it, apparently each write()
incurs some overhead.
extend the PUT 3rd-party-copy with a local-only copy

The CDMI PUT with a src-url can now copy items locally if both src and
destination are on the same storage. It tries it by passing the path
part of the src url and the destination path to the copy_file_obj()
function that performs the local copy. If this fails because the src is
not a local file, or because the copy mechanism fails for other reasons,
it falls back to the streaming copy through the http interface.

This is implemented for irods and localstorage, dmlite doesn't provide
this capability.

current drawbacks:
- it doesn't distinguish perfectly between errors, so even if the permission
  on the (local) src was denied, it will try again with a sterming copy.
  On irods we have no other possibility thanks to the irods api, on the
  localstorage it might be better.
- There are ambiguities when a file on a remote site has the same path
  as a local one -- the local file would always be preferred.
  I don't see a security problem, though, because the user invoking the
  copy still needs read access on the local file that is 'accidentally'
  copied.
  With the information available, I couldn't think of any reliable
  mechanism to distinguish a file on the local backend and from remote
  ones, considering that a local backend can show itself with more than
  one server name and that a remote storage can still be under the local
  domain.

Improvements:
- being able to check a file's checksum for the local copy would be
  perfect: if the checksum matches, we can copy the local file,
  otherwise we take the remote one, but we have to investigate if we can
  rely on this information being available in all cases.
build and test with PyRods 3.3.6
fix getting the parent CDMI object ID
add a check before starting the local copy

check if the src location includes the set CDMI domain before attempting
a local (irods-internal) copy. this helps avoiding a conflict if one
wants to copy from a remote source, while the same path exists locally.
The check expects that the remote source location (that is:
server.domain.tld) does not include the string that is set as CDMI
domain.
add better error handling for localstorage copy
storage interface refactoring and add copy tests

1. refactor storage interface tests to inherit from test_common.TestApi
2. add new tests for the copy API
handle irods copy exceptions better

use the _handle_irodsexception function like everywhere else
add more debug info