RemoteTaskRunner: Fix NPE on cleanup due to missing withWorker
TaskStorage.add() now throws TaskExistsException, and the servlet respects it

The servlet will throw 400 rather than 500 when a task already exists, to
signify that the request has no hope of ever working.
Merge pull request #358 from metamx/index-service-bugs

Index service bugs