WIP - 3.0 method signature

Harden method signatures for public methods, cleanup/simplify methods and correct doc blocks.

Quite a few times methods cast internally to array, while the method should only accept arrays in the first place (according to doc block).

Also quite a few methods accepted too many different types per argument, from string to boolean to array at the same time. This helps to avoid these dirty uses and removes undocumented juggling of array params.