Dot

Added dot function for sparse matrix.
You changed the perform and now X must be sparse while Y can be anything.  You should change the checks here to reflect that.