Improvements for components

At the moment ufoJS uses the pen model to handle components. When a component is hit, pen.addComponent() is called with the component and that in turn uses glyph.draw() to render the component using a transformation pen (affine transform to set location etc in current glyph so that the component can be placed at a specific location).

These changes allow ./data/fonts/test/components.ufo to render including the referenced components. Because of how component handling currently works (as described above) you loose the reference, the component is hard stamped into the current glyph. If Metapolator is mostly intended to load UFO files and generate open type metapolated fonts then stamping might be ok. Otherwise things get more interesting in the code to retain the reference for these stamped items.

Stamping is a great start from the dropping components that was there before, so this PR is here to make it happen now.

If you use [{}].concat(arguments) then then BasePen can not use this.glyphSet.get any more. This assumes that glyphSet is the first and only argument in the varargs. It seems that if glyphSet is part of arguments then the first line there will flatten that out.