Modified *scan cursor parameter to String to support unsigned long cursor

This PR fixes #531.

As @playerofgames states, Java doesn't support "unsigned", so long is not "unsigned", just closer to unsigned long.
And @playerofgames and @xetorthio are agreed to use String for cursor, and I agree, too.

Basically *scan usage is set cursor to value Redis previously return to us.
We only set cursor specific value when we starts to scanning (we set cursor to 0).
So it doesn't make us inconvenient when we change cursor parameter int to String.
(I also included SCAN_POINTER_START for convenient.)

Changelog
----
* modified all *scan method's cursor parameter
* modified scan result's cursor
* include unit test for check cursor with unsigned long's max
  * try to include unit test with cursor under zero, but redis seems to ignore '-' sign, so skip it