I use and highly recommend Fossil (http://www.fossil-scm.org). It can handle each of your main purposes out of the box with ease.
It's got a good command line interface, a built-in web interface, it's self-contained, and the model is easy to understand. It's simple enough that I can use it as a replacement for RCS for personal stuff (like a LaTeX document) but it scales to large projects too (it's used by SQLite and Tcl/Tk, for example).
It's also trustworthy, with a solid, portable, and well-tested code base—not a surprise since it was originally authored by D. Richard Hipp. I have no clue why it isn't more popular.