Introduce the Endpoint object

Here we introduce the Endpoint object which replaces the dictionaries in deploy
engines and thus make it more difficult to make errors while writing code.

Change-Id: Id068280f91a4c9df2c1e764e9eda0163190a5fad
Merge "Introduce the Endpoint object"