KroneckerProduct: we have const_cast_derived so why not use it?

--HG--
extra : source : 4ccc0e6c8f9b37b710d2d8efbcde7426c265d881
Make kroneckerProduct take two arguments and return an expression, which is more straight-forward.

--HG--
extra : source : 8857f3d64c348179e44994f44e501c4dd2f5b208
Add doc for KroneckerProductSparse.

--HG--
extra : source : 7f731654756fd30c0d422086ff4dab7282a12529
Let KroneckerProduct inherit ReturnByValue to eliminate temporary evaluation. It's uncommon to store the product back to one of the operands.

--HG--
extra : source : f3b2d55ead3354d05b76ee092a455e95df04de9b
Fix compile error caused by incomplete SparseMatrixBase.

--HG--
extra : source : 9c198b08cf7007bc2dadc26ae22d13977c323449
Make KroneckerProductSparse inherit EigenBase instead of SparseMatrixBase, for it does not provide an InnerIterator.

--HG--
extra : source : 743300a70be818e138f2fc0793195c73a9cd22f6
Set matrix to zero before inserting entries (partially fixes bug 539).