Make options object prototype-inherited

Fixes #2294
Use L.Util.create for class extension
use lighter extend in setOptions, simplify extend
Merge pull request #2300 from Leaflet/prototypal-options

Make options object prototype-inherited