added first draft of linalg unifying backend
added cmake options for setting linalg backend libraries
added viennacl support and redesigned linalg policy
added hard requirement for linalg backends cmake options
added explicitly set eigen3 backend dot unit-test
added viennacl dot and made it easy to call explicit backend dot
Merge pull request #2217 from lambday/feature/linalg

Linear algebra unifying backend (WIP) - First draft
restructured linalg internal lib and renamed namespace impl to implementation
added sum and symmetric sum in linalg with eigen3 backend
Merge pull request #2225 from lambday/feature/linalg

First batch of matrix sum/sum-symmetric methods in linalg framework
added block definition and block sum methods in linalg
minor documentation fix in linalg
added square coefficient of matrix method in linalg
Merge pull request #2233 from lambday/feature/linalg

added block definition and block sum methods in linalg
Merge pull request #2234 from lambday/feature/linalg

added square coefficient of matrix method in linalg
added rowwise and colwise sum methods in linalg
Merge pull request #2235 from lambday/feature/linalg

added rowwise and colwise sum methods in linalg
updated custom kernel sum methods with linalg sum methods
Merge pull request #2241 from lambday/feature/linalg

updated custom kernel sum methods with linalg sum methods
Added vector_sum in linalg library

Presently works only with SGVector and Eigen3 vectors with explicitly
set Eigen3 backend