Added support for smarter recombination (using itertools.combinations)

The basic idea of this patch is to handle errors when partial
verification passes with a wrong hash in a threshold account. This error
usually appears after recombination, since the wrong hashes are not able
to provide this capability.

This patch tries to combine the secret with all the possible shares
provided. It also attempts to figure out which shares are wrong.
Changed instances of 1 for True in the is_unlocked flag.

I consider this to be an issue with the way I code (really C like).
There were inconsistencies in the assignment of this flag throughout the
code; some times I managed it as a 0/1 and some other times I consider
them to be false. It is fixed now
Fixes a wrong hash-verification routine

After recombination, we attempt to verify previous hashes. This implied
that I stored the salted-hash value of them for future verifications.
There was an inconsistency between the way I stored the salted-hash and
the way I verified it, one as a byte_array and the other as a base 64
encoded string.
Added the reset_hasher_state function to the test suite

This code was repeated for every test-case, so I moved it out of the
case and put them in a separate function. We should consider to make it
part of the boject as part of the buildup routine
Adds a test case for the wrong recombination event

We now use combinatory logic to try recombination every time a new share
is added to the pool. I added a test case to verify this.