Feature/optimizedmatrix

# ISSUES
- [x]  NO GENERICS

I was quite puzzled how to make it generic / make the compiler happy (complains about not knowing generic Ring/Monoid[T] and ord: Ordering[T]). Hints appreciated.
FIXED - some typecasting involved

- [x]  IS THERE A MOCK TYPEDPIPE OBJECT?

I wanted to port the original prototype tests (in Matrix2OptimizationTest), but the problem I had was with abstracting the Scalding/Cascading stuff from it... The "solution" I came up with is that I wrapped TypedPipes with Option and created a constructor for Literals without a Pipe... but I'm not entirely happy with it. Again, hints appreciated
FIXED

- [x] BETTER TYPEDPIPE APPROACH

I sometimes struggled in making it work, and the current code (in Matrix2 and Matrix2Test) is likely inefficient and/or unnecessary (e.g. creating TypedPipes via Fields). Feel free to comment on it.
FIXED - changed most things or added TODOs

- [x] BROKEN MULTIPLICATION WITH LAZY SELF-OPTIMIZATION

Lastly, when I added the self-optimization feature, the unit test broke (see the stack trace below). I suspected two things may fix it: 1) removing that Option wrapper, 2) changing the mutable HashMap to immutable or ConcurrentMap... I tried both and neither of them fixed it - any other guesses where it goes wrong?
FIXED - NoClue SizeHints didn't return a total for the optimization - default 0L was added