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.
Anyone using `pandas` will necessarily deal with data that is in large 2D or 3D arrays padded with `NaN` values.  That is just how it stores data.  `pandas` has its own data-wrangling tools, but these come with some performance overhead.  Dealing with the raw data will allow people to bypass that.  Also, people will want to get their data into a format that is easily handled by `pandas`, which again would involve putting into a 2D or 3D array padded with NaNs.  Further, even for people who aren't using `pandas`, using NaNs to indicate missing data is pretty much the de-facto standard in python.  So I disagree that this situation is unlikely, I think it is something people are going to encounter a lot.