Avoid clashes with feature property names

Currently, a feature's `styleFunction` property is treated very differently than other user set properties.  This will cause issues if anybody happens to parse data with a `styleFunction` property.  Minor probability of a clash now, but if the property name changes to `style`, the chance of clashes will be higher.

In my opinion, we should allow features to have user set properties with any names (as with `ol.Object#set/get`).  And things like `style` (or `styleFunction`) and `id` should be handled separately (as actual properties on the object).  Yes, this means you can't bind one feature's style to another, but I think that there is more value in not having reserved property names for data we can't control.