Simplified graphs generated for canonical slices

* When `step` is 1 and either `start` or `stop` is a boundary, the
  canonical representation of `slice(start, stop, step)` is now simpler

* Other simplifications in the more general case when `step` is a
  constant

* Fixed crash when calling `get_scalar_constant_value()` on a numpy
  array.

* Ensure that start <= stop in canonical slice representations, which
  makes it easier to compute their length.
PEP8
Added test for crash fixed in 5ff9796
Test for get_scalar_constant_value(empty array)
Merge pull request #1299 from delallea/canonical_slice

Simpler graphs for canonical slices