Margin: Fully rewrite Margin implementations

Margins are now fully DRY and involve far less code.
Margins now consume separate file compilation services
which will also be used for compile-on-save/build and
minification.

Also refactors compilation service classes & improves naming.

This is how multiple preview panes should be done.
Margin: Suppress margins for .d.ts files