Decreasing range object

Modify the IntRange and LongRange object to allow
decreasing ranges. This allow to write `range(5, 0)`.
Bug in LongRange test.
Make decrasing range explicit

* `range(5, 1)` is empty, the `:incrementBy(-1)`
  *must* be explicitly specified;
* add a `:decrementBy(x)` method equivalent to
  `:incrementBy(-x)`
* add a `reversed_range(start, end)` predefined
  function, equivalent to
  `range(start, end):incrementBy(-1)`
Improve range object

* adds a default lower-bound value of 0
* makes two ranges with same from, to and increment equals
Implements hashCode on range objects

Also adds some tests an fix a bug when changing the sign of the
increment twice
asciidoc for the new features of ranges
Refactoring: makes ranges more generic

Introduces a `Range<T>` interface and an `AbstractRange<T>` that
generalize all the decreasing machinery, as well as `equals` and
`hashCode`.
Range extends Collection (and small improvements)

* makes the `Range` interface to extends `Collection` and adds
  the corresponding implementations in `IntRange` and `LongRange`,
* adds a `encloses(v)` method to `Range` checking that `v` is between
  `from` and `to`,
* constrains the type used in `AbstractRange<T>` to be a `Comparable<T>`
  to provide a default implementation for `enclose` and thus ease
  `contains` implementation,
* augment `Range` in golo with a `reversed` method,
* adds corresponding tests.
Adds char range, clean code and refactorings

* adds a range on chars: `range('a', 'z')` and change the asciidoc and
  javadoc accordingly
* make the `reversed` augmentation a proper java method tho refactor `Predefined.reversed_range`,
* fix a bug regarding comparisons that assumed `compareTo` to be only
  {-1, 0, 1} which is not the case for chars
* adds a `defaultValue` method and a new constructor using it to
  refactor `Predefined.range(to)`
Adds a range literal notation.

Ranges can now be defined with the literal notation `[begin..end]`
Uses equals for string comparison.