Added handling of defs, gradient, drop shadow, fillPattern etc.

This adds a mechanism for handling defs.  It reuses the renderer's  `_paths` object for storing patterns etc and uses the same logic for removing them.  These elements are attached to the DOM in the renderer's `_container` and referenced by id created using `L.stamp()`.  `PathFunctions` is now attached to `L.SVG.prototype` and the various functions operate on layers rather than options.

I don't really understand all the SVG stuff so its very possible I missed some stuff, but its starting to look like the 0.7 version now.