Add feature: dot with vector

Supports three scenario:
1. dot(vec, vec) = scaler
2. dot(vec, mat) = vector
3. dot(mat, vec) = vector