For (2),
> Our goal is to be able to install a package using Puppet, Chef, CFengine, or something else that puts all of your code in a standard location every time, on every server.
For (3), I think it can be solved by some database migrate library?