Sorry if I'm missing something here, but what do we call $M$ if the functor $H_M:N\mapsto Hom(M,N)$ is exact? Is this in fact equivalent to being flat through some adjointness properties?
We call such modules projective. If you take $N\mapsto Hom(N,M)$ then you get injective modules. This is fairly basic, and covered in any homological algebra book, and mentioned on wikipedia. 


It might also be helpful to know that projective is equivalent to being a summand of a free module (apply $Hom(M,\text{})$ to a presentation of $M$), and hence projectives are flat. The converse is not true in general (e.g. $\mathbb Q$ is flat as a $\mathbb Z$module, but not projective), but for finitely presented modules over commutative rings, flat and projective are equivalent. 


I'm pretty sure that $M$ is called projective in this case, and if $N \rightarrow Hom(N,M)$ is exact then $M$ is called injective. I might have it backwards, though. 

