Start working on ABS support.

ABS module handles dealing with packages in the ABS tree and will
probably mirror AUR.hs

Commands.M actually runs the operations such as upgrading/installing
packages.
Add some documentation to the ABS stuff.
Merge branch 'master' into abs
Get the bloody function for finding files working.
Read and parse PKGBUILDs.
Merge branch 'master' into abs
Fill out some stubs in the 'M' module ready to get things working.
Various work to thread through a workflow for ABS info.

Other ABS functions to follow!
Add some more details to the PkgInfo for packages from ABS.

- Repository
- Full path to ABS directory
Move 'isntMostRecent' from Core to A in order that Core not have any
reference to the AUR specific PkgInfo.

'AURPkg' can hopefully be provided by packages from the ABS.
Just a little bit of tidying.
Move to using the Bash parsing lib for parsing PKGBUILDs.
Fix issue with PKGBUILDS using unusual characters.

Some PKGBUILDS had unusual characters and caused the search to fail.
Now they are read in forcing UTF-8 mode. Note that readFileEncoding
will still leak file handles (like readFile), which I don't like,
but this isn't any worse than the existing situation and it preserves
semantics. Potentially fix in the future by using strict bytestring
read and then unpack.
Add a 'readFileUTF8' method to utilities.
Merge branch 'master' into abs
Add some documentation.
Add some more documentation to a few things.
Abstract over SourcePackage for building.

SourcePackage now abstracts out the parts of AURPkg used for building
the packages, in preparation to introduce ABSPkg as another option.

References have been removed from Build.hs and Records.hs, which now
require only the contstraint 'SourcePackage a'. References remain
in Dependencies.hs, which has specific AUR functionality, and
Editing.hs, which only requires a constructor.

TODO:
- Add ABSPkg and related functionality for building.
- Work out dependency manangement when dealing with packages in ABS.
- Add the actual install commands.
Align columns.
Relatively major re-organisation.

Purpose of this is to clean out 'Core' of all the specific AUR
related functionality and push it into the Aura.AUR module. Likewise
for the nascent ABS functionality and for virtual packages.

Dependencies is still heavily biased towards AUR. Plan is abstract the
filtering and stuff such that one can specify the filtering to take
place. Filters will also return the correct type of package to allow
this to continue.

There may also be a case for unifying AURPkg with AUR/PkgInfo and
ABSPkg with ABS/PkgInfo, but I haven't given this much thought.