Allow overriding the `deploy` command with Haskell code

By overriding `deploySite` with a `Configuration -> IO ()` code,
the user can execute Haskell code to deploy the site rather than
shell code.

The default behaviour honors the `deployCommand` configuration
field and is backward compatible.