Made RegressionStrategy.scala and Indicators more modular

Our code works and runs to create a graph for both ShiftsIndicator and RSIIndicator. Developer should be able to extend BaseIndicator to implement new feature, though there are still some issues remaining. The major ones are:

FBIC-3 Make params to RSIIndicator a case class
FBIC-9 metricsParams are always from emptyStrategy, should be from RegressionStrategy
FBIC-11 fix the difference in graphs of ShiftsIndicator, apparently, the coefficient vector comes out different
FBIC-16 abstract the max period of indicators -> firstIdx = getMaxOffSet() + 3 in createModel
FBIC-19 shouldn't need to loop through indicators, use mapping function
FBIC-22 Document RegressionStrategy
FBIC-26 Implement a new indicator to see how well our class works

We still have some work to do so we don't expect this pull request to be accepted. Hoping this serves as a brief code review. Please comment on any issue you can and looking forward to what you have to say!


A more scala-ish way is:
```scala
val densVecArray = params.indicators.map { case (name, indicator) => {
  val price = dataView.priceFrame(indicator.minWindowSize())
  val logPrice = price.mapValues(math.log)
  indicator.getOne(logPrice.firstCol(ticker))
}}
val vec = DenseVector[Double](densVecArray)
```