Add more referencing options

This adds a base function `apply_reference` that can apply various
different referencing schemes. Two convenience functions are also
added that provide a convenient interface to the base function:

 - `set_eeg_reference`: apply a simple reference to all EEG channels
 - `set_bipolar_reference`: apply a bipolar reference (or more)

A helper function `_parse_channel_list` is also added to help functions
be more flexible in how they allow channels to be specified.
We usually write this differently, so please change for consistency:
```
if not info['custom_ref_applied']:
    raise RuntimeError(...)
```
One advantage is that you can usually throw some more informative type of error as opposed to a generic `AssertionError`. I think `RuntimeError` is the best we can do here.