Move to JS

@thomasboyt @domenic @rpflorence @ebryn 

I think this is about ready to merge, I just wanted to have you guys give it a quick once-over.