Restructured project layout
Listening now returns both a promise and emits an event when server has started
Added some minimal functional testing