annotate: Limit fuzzy search to sets that can meet threshold
lcs: Add C-based implementation for speed

This obviously makes the build platform-dependent. Probably doesn't work
on Windows. Patches accepted ;) The behaviour is still hidden behind the
--fuzzy option to annotate as there is still some lag. However, for a
rough idea, using the C implementation I could classify ~470
descriptions per second on a Lenovo X201s from a file containing 1575
annotated transactions.
README: Note requirement for a C compiler
annotate: Attempt to improve guesses for fuzzy matches

Adds an extra layer to the fuzzy matching framework, allowing groups to
have more than one tag. The subgroups have no explicit threshold, rather
their score, an approximation of description consistency, is calculated
across group members. A category guess is calculated by taking the tag
of the maximum normalised lcs across subgroups. Membership of a subgroup
is defined by user confirmation of a category, which may reduce the
overall score of the group.

Overall this change appears to slow down the fuzzy matching by a
back-of-the-envelope factor of 3, but the hope is it improves the
quality of guesses. No data has been collected on guess quality.
visualise: Fix bar_targets 'flexible' category budget calculations

Previous calculations were wrong, but conservatively wrong. More money
for everyone!

Closes #7
tests: Fix tagging test

The test suite broke after the refactor of annotate to improve tag
accuracy.
lcs: Reduce space complexity to O(n) for input lengths m, n

More accurately the new algorithm uses 2n memory. The previous
algorithm's space complexity was O(m*n) for input lengths m, n. Doesn't
have a noticeable impact on runtime, but it was an interesting
experiment.
transform: Cope with commbank's space between sign and value
Add install section to README

It wasn't obvious to me (as a non python user) how this was meant to work so
this section should help quickly set others on their way if needed.
ext/lcs: Fix formal parameter 'const' typo

Closes #8
Merge pull request #9 from goetzk/Installation-in-README

Add install section to README
transform: Add Bankwest CSV format

Signed-off-by: Joel Stanley <joel@jms.id.au>