add ability to do grunt builds; split up js into component files