I'd definitely go for Plone - looking over your requirements I think Plone would do what you need out of the box with just a little bit of thru the web configuration. A