[ gitignore ] initialization
[ refactoring | broken ] Introducing sparseVector

  In order to have a cleaner interface, it became obvious that a
  notion of sparseVector encapsulating BatMap's interface was
  necessary. This brings quite a lot of backwards incompatible
  changes:

  - Ring is now split into AdditiveGroup (which Vector is an instance
  of) and Ring itself. This lets nest the calls to [SparseVector.Make]
  to have matrices.

  - [SparseVector] enforces the [zeroFree] invariants so well that it
  becomes virtually impossible to create badly behaved matrices when
  using only the combinators at our disposal.

  - The abstractions provided let us have very generic functions thus
  making the implementation of [plus], [minus], [opp], etc. much more
  simple.

  - The interface file is now completely irrelevant hence it being
  removed for the moment. I will reintroduce it later on when the
  design will be fixed.

  - [tabulate*] have not been reimplemented yet. All the tests are
  therefore failing because of that hence this commit being tagged
  as [broken]. It will be the priority next time.