setup_haskell_sandboxes.rb: add documentation

Signed-off-by: Pang Yan Han <pangyanhan@gmail.com>
setup_haskell_sandboxes.rb: refactor out classify_haskell_packages function

classify_haskell_packages classifies Haskell packages into 3 categories:
1. Installed
   - Already installed. No further action required
2. ErrorFileExists
   - A file with the same name as the destination directory of the package
     exists. Will not proceed with package installation
3. Pending
   - Package has not been installed; will install it

This slightly cleans up the logic in the setup_haskell_sandboxes function

Signed-off-by: Pang Yan Han <pangyanhan@gmail.com>
setup_haskell_sandboxes.rb: Only call cabal update when needed

Specifically, only when we need to install new packages. Otherwise, we do not
do it, since `cabal update` takes up a lot of time.

Signed-off-by: Pang Yan Han <pangyanhan@gmail.com>
setup_haskell_sandboxes.rb: Improve message for ErrorFileExists

For packages which cannot be installed due to the existence of a file
with the same name as the destination directory, we improve the message
by telling the user to remove the file if he/she wants to proceed with
installing the package.

Signed-off-by: Pang Yan Han <pangyanhan@gmail.com>