API with reliable address callbacks?
The Mt. Gox API allows you to do these things. It allows you to create new deposit adresses and withdraw/deposit money into existing ones. 

While the API dosent actually have something to tell you when your specific order has been executed, you can get a list of your open orders and compare those against a local listing of placed orders to determine which have been executed. However their websockets API will tell you when any trade has been made on the network which you could then check yours against as well. 

Another good API solution would be bitstamps though theirs donsent have a websocket component.