Refactor spire.math.Interval for speed and correctness.

This commit changes the way Spire handles intervals. It removes the
bound objects (whose unop/binop logic was a bit faulty), instead
using interval subtypes and flags. There are four types of intervals:

  1. All: the interval containing all values
  2. Above(lower): the interval above a lower bound
  3. Below(upper): the interval below an upper bound
  4. Ranged(lower, upper): an interval bounded by two values

Each bound may be open or closed using a flag, which are not meant to
be user-visible. There were a lot of issues with unbound intervals
that stemmed from treaing open/closed/unbound with the same logic,
which this design fixes.
add Interval#translate using Polynomial
Add reified Bound[A] type back to Interval.

It's no longer used internally, but it's useful for expressing fold
and maybe some other functions eventually. This also adds the
Interval.fromBounds(x, y) constructor.
Merge remote-tracking branch 'origin/master' into topic/matrix-wip
add jdistlib dep to sbt
turn off non-literal strid/range warning
New random powers-of-2 distribution.

This is especially useful to test floating-point code, as this enables using
plain equalities since arithmetic is exact for numbers of the form 2^n for an
integer n.
Optimize access to vector and matrix elements with "final"
More documentation cleanup
Methods dealing with samples shall be iterators

oneDimensionSample was a List and that was enough to eventually lead
to the generation of List of instances of Matrix, which is a bad idea
if one is to allow the efficient generation of huge matrices.
Random distribution of triangular matrices
Triangular system solver (BLAS xTRSM)
Better name for one of the test sample generator
Triangular matrix times vector
Scalar product of two vectors
Less cluttered code
Fix random seed to avoid occasional failures to converge
Sample of random matrices to test linear equation solving
Construction of a matrix with a tabulating function
Permutation of an integer range suited for linear algebra algorithms