I've had great results with yEd. Personally, I used it to map a complex piece of code and to develop a software library.
It should satisfy all your bullet points, and has the additional plus of being cross-platform (Java) and free. It can also apply a nifty algorithm to clean up messy networks whilst keeping all connections the same.
There are several dozen competitors, but basically it all comes down to a choice between the big two: TADS and http://inform7.com/.
The languages have widely different syntax, so it will be a matter of taste for you.
A comparison of the syntax with a small sample game can be found here.
Choosing a Language for Interactive Fiction
Well, if you are using TADS ... about a decade ago, I was working on a TADS IDE, which I have long since abandoned, but always wished to start up again.
It won't do all that you want (and does a lot that you don't ask for), but it might be of interest to you.
Here is a saved copy of the website; let me know if I should email you a copy of the program (or ...