Adding SVG support

I know this still requires some tidying (tests). But I just thought I'd put it up here to get some feedback. Basically adding `{isSVG: true}` to a module will make it behave correctly as an SVG element.

@rowanbeentje, @matthew-andrews, @georgecrawford if I clean up this pull request are you happy to merge?