Use SqlPersistT with ActionE as base monad

Rather than the inflexible returning and joining an 'ActionE' from
'SqlPersistM', lift computations from the 'ActionE' monad into the
'SqlPersistA' monad.

'SqlPersistA' replaces 'SqlPersistM' by using 'ActionE' at the bottom of
the monad stack in place of 'IO'. This also enables more advanced
operations like retrieving parameters and raising 'Error's from the
'SqlPersistA' monad.

Old type:
type SqlPersistM = SqlPersistT (NoLoggingT (ResourceT IO))
New type:
type SqlPersistA = SqlPersistT (NoLoggingT (ResourceT ActionE))
type ActionE = ActionT Error IO

This ordering allows 'SqlPersistA' to be run on top of 'ActionE' like
previously with 'SqlPersistM', but without needing 'liftIO' and with the
ability to lift 'ActionE' into 'SqlPersistA'.

Require exceptions for the 'MonadThrow' typeclass, of which 'ActionE'
must be an instance in order to be used with database functions.

Require monad-logger and resourcet packages for the types used to define
'SqlPersistA' and necessary functions to run 'SqlPersistA' monads:
  monad-logger - 'NoLoggingT', 'runNoLoggingT'
  resourcet    - 'ResourceT',  'runResourceT'

Signed-off-by: Stian Ellingsen    <stian@plaimi.net>
Signed-off-by: Alexander Berntsen <alexander@plaimi.net>
Reviewed-by:   Alexander Berntsen <alexander@plaimi.net>
Signed-off-by: Alexander Berntsen <alexander@plaimi.net>
CLI: Use type synonym for port in Config

Signed-off-by: Stian Ellingsen    <stian@plaimi.net>
Signed-off-by: Alexander Berntsen <alexander@plaimi.net>
Reviewed-by:   Alexander Berntsen <alexander@plaimi.net>
Signed-off-by: Alexander Berntsen <alexander@plaimi.net>