Fix for #145

The issue is that reparing a block/unblock invoice gives different results depending on whether the invoice sub system
is notified for for events (BLOCK and UNBLOCK) or solely at the end during the UNBLOCK. Since we support both
configuration the code needs to handle both cases.

Since the issue was in the invoicing repair layer i extracted the few repair tests we add, documented them better and added some more
around the issue found. While doing that i aslo spotted a bug in the code when adding the repair items so added more thorough tests cases
around that as well and fixed that other bug.
Merge branch 'master' of github.com:killbill/killbill