- Binary and string support

Implemented binary support in tandem with strings. This meant minor internal changes. Remove some todos.

- Documentation
- Specs
- Tests

This should not break any old functionality I hope!
Still can't understand why not `when is_binary(Text) andalso (is_binary(Context) orelse Context == undefined)`?
Because current guard will match `dpgettext(my_domain, <<"my_ctx">>, "string text", en)` and will return wrong result, instead of failing with error...
I think we should explicitly handle (and protect by guards!!) following 3 cases:
```erlang
% 1st (pass to gettexter_server)
Context :: undefined | binary(),
Text :: binary()

% 2nd (convert text to binary, and translation back to string)
Context :: undefined
Text :: string()

% 3rd (convert both to binary, and translation back to string)
Context :: string()
Text :: string()
```
And fail with `function_clause` or `badarg` in any other case.
So, we need to change 1'st guard (as I mentioned before) and, maybe (but not required), add `when is_string(StrContext) andalso is_string(StrText)` to last clause.