Base contact by function

* [ADD] added base_contact_by_functions module: It allow to manage contacts by function"
* [ADD] Added base_contact_by_functions_partner_firstname module: It allows to add firstname before name.Name is considered like the lastname and we have firstname and lastname on partner view and contact view."
The base_contact_by_functions_partner_firstname module depends on partner_firstname and base_contact_by_functions module.

Previous reviews:
---

@StefanRijnhart

> I have a hard time trying to find out what this module actually does. The manifest description is very terse. The name of the module reminds me of base_contact, which allowed multiple connections between the same person and a company. Is this module similar? The description should at least explain what 'institutions' are (a concept that this module introduces).
>
> Terminology is off at times, it seems. l.130: 'acronym': is this abbreviation, or maybe stick to the standard 'code' field name and label?
>
> Organism: I'm guessing you mean organization. But in any case, changing the 'company' terminology should be split off as a separate module.
>
> The translations seem to contain obsolete terms, e.g. l.241 and other occurrences of 'passport'.

@bwrsandman

> This is for cases where one partner (Mike Fletcher President of Agrolait) can be part of another company (Mike Fletcher VP of AsusTEK) in a different function.
>
> The module helps track these functions.
don't cast potentially Unicode objects to strings. This will crash if there is a non-ascii character.