Improve error messages when elm input file or binary can't be found

There are a few problems currently with the elm server:

  1. When the elm binary is not found, a nondescript error is displayed
  2. When a file has a suffix .elm but the file is not found, the same error
     as in (1) is displayed
  3. When a non-existing file ending in .elm is requested, the error code is
     incorrect - the elm-server returns a 400 instead of a 404

The following is the error message that shows up in cases (1) and (2) above:

    Server error: elm-server-cache: getDirectoryContents: does not exist (No such file or directory)

This commit fixes the generic runtime errors (source of (1) and (2) above) by
guarding against trying to delete a non-existing directory. It also fixes the
HTTP code for non-existing .elm files by returning the general Happstack 404
page that is returned for other not-found requests.
Modify code to follow hlint suggestions