Remove reflection, and fix bug in mix func

There was a bug in mix where the '=' comparison 
  between (* w a) and -1 would not return correctly.
  This occurred because (* w a) would return a double, 
  but the comparison was with an int.  I modified the 
  comparison to use double -1.0, and both the reflection 
  and the comparison now behave correctly.

I also tracked down all uses of reflection and added type hints.
I am not 100% sure of these types, so feel free to review.