Object rewrite. Lots of bugs that will need to be worked out, but all previous features are there.

@Nateowami

Merging this so that you have a new codebase, since a lot of stuff is changed.

Namely:
JavaScript that needs to be run AFTER the GUI loads should now be placed in 
```javascript
program.onload()
```

Styles can now be duplicated across widgets:
```css
label, #bacon, .asdf {
STYLES : VALUES;
}
```

The CSS parser, Style application systems, and map registration systems are now all 100% JavaScript.