Tangent vector defined in two ways? Let $M$ be a smooth manifold. Apparently a tangent vector is a derivation of $C^\infty(M)$, and apparently it is a map $C^\infty(M)\to \Bbb R$. Which is it?

Stuff like this confuses me: say $X\in\mathfrak{X}(M)$, i.e. $X:M\to TM$ is a vector field. We write $X(p)=X_p$ for a tangent vector. Then apparently $f\in C^\infty(U)$ gives us a new function $Xf$ on $U$ by taking $Xf(p)=X_p(f)$, so $X_p:C^\infty(U)\to \Bbb R$.
They later say that for $X\in\mathfrak{X}(U)$, we have for $f,g\in C^\infty(U)$, $X(fg)=X(f)g+fX(g)$ which tells me that $X:C^\infty(U)\to C^\infty(U)$, and that $X\in\text{Der}(C^\infty(U))$. But this just says vector fields are derivations of $C^\infty(U)$, but doesn't tell me that tangent vectors are derivations.
 A: They are multiple equivalent ways to define $T_xM$ for $x \in M$. As you said, one was is the set of derivations on $C^\infty(M)$ (though note really its derivations on the germ at x,  so thats $C^\infty(M)$ modulo the equivalence relation that that $f \sim g$ if they agree on some neighbourhood of $x$). 
Another way is to define $T_xM$ it as the set $\{v \text{ s.t. } \exists \gamma : [0,1] \rightarrow M, \gamma(0)=x, \gamma '(0)=v\}$. It can be shown that there is a 1-1 correspondence between these two sets. For example for some $v$ in the latter definition, you can get a derivation $D(f) := (f \circ \gamma)'(0)$ and you can go back the other way. 
We use these definitions where most appropriate. So for example its hard to show the latter is a vector space but easy to show the former is by finding it has a basis $\{\partial /\partial x_i \}_i$. 
Your latter confusion comes from when you have or haven't evaluated your map. So let $X: M \rightarrow TM$ be a vector field, so for each $p \in M$ we get some $X_p \in T_pM$, we can define a new object $Xf : M \rightarrow \mathbb{R}$ by $Xf(p) := X_pf$. Now for $f,g$ again we can get an $X(fg)$. We know what this is by what we just said, its $X(fg)(p) := X_p(fg)$. However we can also show that $X(fg) = X(f)g + fX(g)$ which gives a nicer way to evaluate it as $X(fg)(p) = X_p(f)g(p) + f(p)X_p(g)$. 
What the object is depends on its context and if you've evalulated it or not, which some textbooks are lazy on making clear. With the above we can on one hand think 'fix some $X$ tangent field, this lets us take some $f$ to a new function $Xf$' so in that case it takes functions to functions. On the other hand we can zoom in on $Xf$ and see it as a map from $M \rightarrow \mathbb{R}$. The former case we were feeding $X$ functions, the latter case we are feeding $Xf$ points.  
