Logistic Regression for dense matrices with supporting functions

Provided is an implementation of Logistic Regression for dense matrices using PBblas.

Files created:

PBblas/HadamardProduct.ecl - Cell wise multiplication using PBblas

PBblas/AutoMap.ecl - Function to determine map sizes for matrices. Not always optimal and is determined by rows/cols in matrix, max row/col for each partition, and CLUSTERSIZE. Partition sizes can also provided for fine tuning/better performance.

PBblas/Tests/MapTest.ecl - Can be used to predetermine map sizes for matrix. Results can be used as defaults for PBblas/AutoMap.ecl or PBblas/MatrixMap.ecl

PBblas/MU.ecl - Matrix universe for Layout_Part matrices. Same concepts as Mat/MU.ecl

Necessary updated files:
Classify.ecl - Added LR model name logistic. Renamed Original Logistic to Logistic_sparse.

PBblas.Types.ecl - Added PBblas/MU.ecl type

ML/Utils.ecl - Added Rebasing for IDs. Added support for Rebasing ID from Numbers. This is important when moving back and forth between Mat types and PBblas types.

PB.dgemm - More detailed error messages so it is easier to tell which matrices/blocks are not compatible.
It is generally better to use a solve instead of taking an inverse and then doing a multiply.  The inverse is simply a solve of X Y = I.  Doing a solve eliminates a multiply.  The reason for doing an inverse is that you can re-use the solve and just do a multiply.