Why is gradient the direction of steepest ascent? $$f(x_1,x_2,...x_n):\mathbb{R}^n \rightarrow \mathbb{R}$$
The definition of the gradient is 
$$ \frac{\partial f}{\partial x_1}\hat{e}_1 +\  ... +\frac{\partial f}{\partial x_n}\hat{e}_n$$

which is a vector.

Reading this definition makes me consider that each component of the gradient corresponds to the rate of change with respect to my objective function if I go along with the direction $\hat{e}_i$.

But I can't see why this vector (defined by the definition of the gradient) has anything to do with the steepest descent.

Why do I get maximal value again if I move along with the direction of gradient?
Each component of the gradient tells you how fast your function is changing with respect to the standard basis.  It's not too far-fetched then to wonder, how fast the function might be changing with respect to some arbitrary direction?  Letting $\vec v$ denote a unit vector, we can project along this direction in the natural way, namely via the dot product $\text{grad}( f(a))\cdot \vec v$.  This is a fairly common definition of the directional derivative.

We can then ask in what direction is this quantity maximal?  You'll recall that $$\text{grad}( f(a))\cdot \vec v = |\text{grad}( f(a))|| \vec v|\text{cos}(\theta)$$

Since $\vec v$ is unit, we have $|\text{grad}( f)|\text{cos}(\theta)$, which is maximal when $\cos(\theta)=1$, in particular when $\vec v$ points in the same direction as $\text{grad}(f(a))$.
I think the most intuitive explanation is the following: Draw one vector in the X direction. Draw another vector in the Y direction. Make each vector any length you want. Make X longer than Y or Y longer than X or make them the same length. Doesn't matter. Now draw the vector that represents the sum of those two vectors, using the rectangle method. This is key to the intuition. You have to draw a rectangle. The resulting vector (representing the sum of the X-direction vector and the Y-direction vector) goes from one corner of the rectangle to the opposite corner. Remember that the length of the resulting vector represents the magnitude, which in this context represents slope. Now look at the drawing and ask yourself: is there any vector within this rectangle, starting at the origin, that is longer than the diagonal one? No. Any vector you draw that starts at the origin and goes to another side of the rectangle is shorter than the diagonal one. Of course, you can draw a vector at the origin that is longer than the diagonal one, but only if that vector leaves the rectangle. But if it leaves the rectangle, then it's no longer operating within the constraint of the given X vector and Y vector; it's working with some different X vector and Y vector. I hope that helps. It took me a while to understand this intuitively and the image of a diagonal within a rectangle finally switched the lamp on.