Manipulating Vector Identity I would like to expand then simplify (if possible) the following quantity. 
$\nabla (a \cdot (C\, a))$
Where $a = a(x)$ is a vector valued function of $x$ and $C$ is a constant matrix. 
 A: I personally find that using indices makes things like this way easier.
Write  the $i$th component as $\sum_{j,k}\partial_i (a_j C_{jk} a_k)$. You can now just use the product rule etc. as normal and reconvert into matrix notation if you wish.
A: No need to use index notation here; use the chain rule.
$$\begin{align*}b \cdot \nabla [a \cdot \underline C(a)] = (b \cdot \nabla a) \cdot \nabla_a [a \cdot \underline C(a)]\end{align*}$$
Let's call $\underline a(b) = b \cdot \nabla a$ and abstract that out for a moment.  $\underline a(b) \cdot \nabla_a [a \cdot \underline C(a)]$ can be attacked using the product rule.
$$\underline a(b) \cdot \nabla_a [a \cdot \underline C(a)] = ([\underline a(b) \cdot \nabla_a]a) \cdot \underline C(a) + a \cdot (\underline a(b) \cdot \nabla_a \underline C(a))$$
You get for the first term $\underline a(b) \cdot \underline C(a) = \overline a \underline C(a) \cdot b$, where $\overline a$ is the transpose.  For the second term, you get $\overline{aC}(a) \cdot b$, so the result is
$$b \cdot \overline a(\underline C + \overline C)(a)$$
$b$ is arbitrary, and we can pull it out to get
$$\nabla(a \cdot \underline C(a)) = \overline a(\underline C + \overline C)(a) = \dot \nabla(\dot a \cdot [\underline C + \overline C](a))$$
The dots denote what is to be differentiated; the second $a$ should not be differentiated and should instead be held constant.  In practice, I would compute the Jacobian transpose $\overline a$ in terms of a basis and just use that.
