Allow plugins to register 'tasks'

I've refactored the main oj class to allow plugins to extendoj with new tasks. Internally oj supports two tasks: build & server. The server task implicitly runs the build task on every file request.

The changes I made makes it possible for plugins to register their own tasks, for instance "git:deploy" which is used by the orangejuice-git-deploy plugin.

Change-Id: I6984acb2a14533ae9512a06661e2b95c56eb6795