BUG: check for monotonic bin arrays in digitize

The check for monotonic bin arrays of digitize doesn't properly handle
inputs with repeated entries at the beginning of the array:

```
>>> np.__version__
'1.8.0'
>>> np.digitize([1], [0, 0 , 2])
array([2], dtype=int64)
>>> np.digitize([1], [2, 2, 0])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: The bins must be monotonically increasing or decreasing
```

Modified `check_array_monotonic` in `_compiled_base.c` to skip over repeating
entries before deciding to check for increasing or decreasing monotonicity
and added relevant tests to `test_function_base.py`.
STY: adapted code to `C_STYLE_GUIDE.rst.txt`.
MAINT: rewrote `check_array_monotonic` to use array indices, not pointers.
TST: tests for proper handling of bins with all items almost equal now check
     the return value for correctness, not just that an error is not raised.
MAINT: hide symbols that shouldn't be exported
MAINT: rewrote `check_array_monotonic` following @charris suggestion to
       minimize indexing.
Merge pull request #4247 from jaimefrio/digitize-monotonic

BUG: check for monotonic bin arrays in digitize
Merge pull request #4279 from juliantaylor/symbol-cleanup

MAINT: hide symbols that shouldn't be exported