Use style option in vector layer examples

Providing a styleFunction option still works because the layer property is still named styleFunction.
Give vector image source a style option
Give feature overlays a style option
Common code for creating a style function
Delete style option before passing to base
Give the draw interaction a style option
Avoid clashing with user property names

Features are records with any number of user set values.  Separate from this, we rely on feature properties like the feature identifier and feature style.  The two (user properties and our internal properties) should not be mixed.
Tests for get/setStyleFunction

It would be nice to also test the following:

    it('does not return user set property with the same name', function() {
      var feature = new ol.Feature({
        whatever: 'some value',
        styleFunction: 'another value'
      });
      expect(feature.getStyleFunction()).to.be(undefined);
    });

Unfortunately, in uncompiled code (or if we export `setStyleFunction`) this does not work.  Same goes for user set `id` properties (this will set our internal `id_` property).  See #1672.
Add setStyle and getStyle methods to ol.layer.Vector

The setStyle method accepts a single style, an array of styles, or a style function.  The getStyle method returns what was set.  Internally, we use the getStyleFunction method which always returns a function.  When calling setStyle, a change event is dispatched (fixes #1671).
As with the vector layer, feature overlays have getStyle and setStyle