Deduplicate values and categories from alignment

Considering the structure of these metadata (a record may have several
contents for a given field, each one of those being aligned),
we might end up with duplicates. Using a set nicely solves it.
Keep only non-empty aligned values.

Out template retrieval magic returns empty fields as well.
We do not want that.
A TODO: several categories may be indicated into the alignment.
This must be handled (either here or during the parsing)
Fix bug in method call after class move

self was not passed as argument / method was not called on object.
These are leftovers of the pre-class organisation.
Change fields pre-processing methods.

Alignments are not ready for some of them.
Use join_all as default.
Use with construct to open alignment file

So we do not forget to close it.
Set default encoding to handle Unicode in terminal

Python complains when printing to the terminal
Unicode strings. Using setdefaultencoding solves it.
Let's loop over all records, shall we?

No reason anymore to limit the loop.
Add some metadata to the metadata_record

We have some methods which nicely process some metadata.
We want to pass this along to the future template - easiest
way is to add as new entries to the record metadata structure.
Glue alignment mapping to record collection
Add categorisation_statistics

This methods computes some nice statistics about the categorisation.
Note it uses numpy, but shouold gracefully fail if it not available.
Fix PEP8 and PEP257 issues.