Do not use string_types from six.

* No reason to fake Python3 compatibility in just one module.
Remove six from requirements.

* Any package that requires it should install it on its own.
Test keyInRange against unicode.

* Fix the naming convention in the other tests.
Merge pull request #711 from Renelvon/no_six

Drop six from requirements
Disallow function redefinitions (E0102).
Unshadow function definitions.

* Silence pylint warnings on behave tests. Naming all steps
  as `step_impl` is conventional.