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.
I've been thinking about this and concluded that changing the reference on Epochs or Evoked is a bad idea. Changing the reference would change the SSP projectors, filtering results, epoch rejection, etc. It should really be the first thing you do after loading the raw data and marking bad channels. Technically you can re-reference an Evoked object and under the right circumstances it might even be correct, but the chances of screwing up the analysis are large and it is not something we should be encouraging.

I can chance the example a bit to not hold three raw files in memory though.