Cache

Here's the first implementation of decoder caching.

# How it works

A SHA1 hash will be computed over the data passed to the decoder solver. That will be used as a key to store the decoders (as npy file) and the solver info (as pickle).
As a cryptographic hash function SHA1 is not the fastest way to hash something, but guarantees collisions to be so unlikely that we have not to care about them. (Otherwise, the arguments of the solver would have to be stored, loaded and compared to ensure no collision is happening. Especially the I/O part would be slow.)

# Limitations/Remarks/Open Questions

* Decoder solver has to be something pickleable.
* Do not use global state in the decoder solvers combined with caching! (Otherwise wrong results might get loaded from the cache.)
* Pickling for solver info might be slow, especially in case large matrices are returned. Using numpy to store these would make the implementation much more complicated.
* Right now the cache is limited to 100 decoder matrices. This gets changed to a limit based on cache size which is configurable with the runcom branch.

# Issue 27: Failure to load cached decoders raises exception

There was one issue which was fixed in commit 27d43e7. It said:

> If Nengo gets interrupted while writing the decoders to the cache, it will leave a half written corrupt file. In subsequent runs Nengo might try to load this file and raise an exception (which aborts the build process). Instead of raising an exception the decoders should be recomputed silently.
Looking into this more, the `numbers.Integral` check is only possible with `numpy>=1.9`, and right now we require `>=1.6`. Rather than bump up the version number I'll just revert the `int_types` lists and also change the `is_integer` check to `isinstance(obj, int_types + (np.integer,))`