Bugfix: do not break out of the for loop

A `break` anywhere inside a `for` loop (even inside a `case`) will exit
from the innermost loop. Replace the `break` with a `:` to get the
desired effect.

Spotted by Pat Brisin.
Hello world, in Haskell, compiled by autotools
Some option parsing progress, and make failure

- Move files into an `Rcm` directory instead of `src`.
- Re-write the unix `getopt(3)` function because that doesn't seem to
  exist already.
- Implement the very basics of a command-line tool: parse some
  arguments.
- Can no longer build the program using `make lsrc`. Seems like it
  cannot find `System.FilePath` when I try.
Get lsrc built again

- If the file with `main` in it isn't a module named `Main`, you have to
  specify `-main-is` to GHC.
- Something in `System.FilePath` doesn't work under the way I'm
  compiling this. Should figure it out later.
- Add a `Makefile.am` for `Rcm/` so that one can `make clean`.
Learn about -package

If you use a package that ghc doesn't guess about, be sure to list it in
`GHC_PACKAGES`. The issue with `System.FilePath` was around the missing
`filepath` package.

See `ghc-pkg list` for a list of packages, and
http://www.haskell.org/ghc/docs/7.0.4/html/libraries/index.html for the
list of packages that come with ghc.
Some tests

- Test-after development.
- Uses hspec.
- No cabal file or documentation yet.
- Split Lsrc off into a private module.
QuickCheck for handleOpt

Property: passing a option argument to `handleOpt`, it augments the
existing list for the respective `Config` field.
A quickcheck for at

The `at' function produces `Just` when the index is within the list, and
`Nothing` otherwise.
Check for afterElem

Selecting the element after the first element gives either `Nothing` or
`Just`, based on whether there is such an element.
Tests for getOpt
WIP: Get the files

- Introduces a `Rcm.Private.Data` module.
- Introduces a POSIX dependency.
getDotfiles produces all the rc files for a config

- Errors are simply printed for now.
- Adds an `isDotted` convenience function.
An lsrc that can list all files

This does not yet exclude host-specific, tagged, or excluded files.
A richer dotfileTarget

Introduce a `DotfileTarget` type, which stores all the components of a
dotfile separately: the base, the path relative to the base (if any),
the file name, the tag (if any), and the host (if any).
Generate the dotfile source

This is the home directory plus a dot plus the path to the file. Data
structures make this easy.

TODO: `Rcm.Private.Dotfiles` chains `config` throughout - would be great
to get that into a `ReaderT`.
Fix build infrastructure to work with tests

- Move `Rcm` and `Test` under `src`.
- Add a `src/Makefile.am` that knows how to build Haskell.
- Update the test helper to have `src` in its path.
- Re-enable the `bin` directory, but disable `bin/lsrc`.

The tests fail, because the output is still debug output. This is
expected.
WIP: tagged dotfiles

I cannot get this test to give the expected failure message.
I got the test to fail

The `ensureDirectory` function was raising an exception when the
directory already existed, and the `onException` function didn't do what
I wanted.

Introduce an `orException :: IO a -> IO a -> IO a`. Run the first IO; if
it succeeds, produce that; otherwise, produce the second IO.
Tagged files

Before descending into `getFiles'`, check for meta directories and
handle those appropriately. This only targets the `tag-` directories;
host-specific and hook directories will have to be handled later.
Test for matching tags

Only produce files under tags that we want.