added an elegant in idea, ugly in implementation, broken optimizer

The optimizer takes a collection of Companies (HistoricalData) and
attempts to brute force optimize them in 10% increments. It works by
making Assessments monoids and orderable, then using Base functions like
maximumBy and mconcat to compute the assessment of the portfolio.

It looks like there is a bug in the assessment function, as it always
returns the same cumulative return, regardless of allocations.