Preliminary implementation of cache references

Instead of returning the output of the memoized function, MemorizedFunc
can output a reference to the cache data.
This implementation is still very rough.
Changed API

The "reference" keyword on MemorizeFunc has been dropped, in favor
of a new method "call_and_shelve".
Added NotMemorizedFunc class
Proper support for cachedir=None in Memory

Memory(cachedir=None).cache(func) does not return func anymore, but
NotMemorizedFunc(func) instead. This is just to consistently provide
call_and_shelve() in all cases.

Added pickle support for NotMemorizedFunc.
Renamed CachedValue to MemorizedResult
Added __repr__ to some classes
Extracted format_signature from MemorizedFunc

It is now a standalone function in func_inspect.py
Extracted format_call from MemorizedFunc

Make this method a standalone function in func_inspect.py. Left a
compatibility method in MemorizedFunc.
Improved code and test
Updated documentation
Made NotMemorizedFunc pickleable
Fixed tests for python3
Minor fixes
Modified MemorizedResult signature

MemorizedResult does not take the full path toward cached value, but
its components: cachedir, function name, arguments hash.

Some refactoring was performed.
Small fixes on code and tests
Changed the signature of func_inspect.format_call

This was done to add a keyword parameter to the function.
Fixed tests for Python 3
Added doc to MemorizedResult

Added attributes description
Code cleanup, increased coverage
Small optimization