More functions and cleanups for elephant

This pull request does 4 main things:

1. It implements the discussed improvements in the `isi` function.
2. It adds a `firing_rate` function.  Its purpose should be self-explanatory.
3. It adds a `conversion` module, which is intended for various functions that convert between different representations.  The only function right now is `binarize`, which was discussed previously.
4. It moves the `cv` function into its own `compat` module, where we can put other NeuroTools-related compatibility functions.

All of these, including API and names (and whether we should do 4 at all) are open to discussion.

I am also working on a `pandas` interface for `elephant`, with conversion between `neo` data types and `pandas` ones, as well as helper functions for using `elephant` functions with these and other `pandas` objects.  The functions are written but I don't have unit tests yet, so I will save that for a later pull request.
In general, I think that advanced parameters with useful defaults should be no problem. Many functions in scipy seem to be designed that way as well. 

However, in this particular case, I agree with Andrew that the use case for the `axis` parameter is unlikely. Spike trains will usually not be in one big array to begin with, so creating it will cost more performance than would be gained in one function call and the user would have to deal with all the NaNs. And in the end, this is just one call to np.diff() anyway if a user really needs it.