[ENH]: add fast_dot function that directly calls BLAS with appropriate data input

In this new PR I've isolated the fast_dot from the #2248 ICA related PR.
I improved exception handling and tests. If data input is not appropriate, a DataConversionWarning is thrown and the function falls back on the regular `np.dot`. Once we're happy with tests and the performance we can issues specific PRs implementing the fast_dot as desired.