make the irods backend the default one
fix irods ls() for PyRods 3.3.6

the new irodspython version does not count the dir itself as one of its
subcollections in getLenSubCollections()
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.