Opt tests

Adds tests for optAUC functions and optRMSE functions. Changes safeOptAUC and greedOptAUC to issue a warning and a message respectively in case of optimization underperforming a component model. In the case of safeOptAUC, the best model is weighted 1 and returned, in greedOptAUC the best optimization is returned with a message. 

Basic tests for greedOptRMSE and ability to issue a message in degenerate cases. However, no tests for degenerate cases are included because I couldn't generate any data to do this. 

Closes #75. 
I don't think it makes a difference in the final result actually -- but I made this change during testing. I actually intended to change it back. 

I was going to ask why we use colSums instead of colMeans. colMeans makes this calculate the RMSE for each set of predictions. colSums is just calculating the sum of squared differences -- as near as I can. 

The results should be the same in terms of the weights, but I was testing the colMeans approach to line up with results from RMSE(pred, Y) calls to check for how missing values are handled.