Allow users to specify a custom config file.

The -c/--config option can be used to specify a path to a custom configuration
file. When specified this path overwrites any of the default paths. If the file
does not exist an error is raised.

This fixes #124.