Organize agent extensions

Move extensions under an ironic_python_agent.extensions module. This
change also moves the @async_command() decorator into the base
extension module.

Change-Id: I4021fcc33a30f3460a31bca44a4bf776cd53d488
Add a @sync_command() decorator

Instead of special-casing syncronous commands, add a decorator similar
to @async_command(), which can be used to decorate extension methods
for execution as a synchronous command.

Change-Id: I1b27f179f667cb065bcffd71ae0f303b05d33b82
Added metaclass statement

Added metaclass statement in base
HardwareManager class. It is necessary
in order to make it really abstract.

Change-Id: I2fa68f8cb11920d85989ba3589b4a394f17d42ae
Deprecated extension name attribute

It seems not to be used, so it is not needed.

Change-Id: Ie46470d888ff11edaf16b94e5b2e716d13cf764f
Closes-Bug: #1308017
Merge "Added metaclass statement"
Decorated commands no longer take command_name

Prior to the (sync|async)_command decorators, extension methods had to
construct command results themselves, which required that they have
the name of the command being executed.

When the async_command decorator was introduced, we wanted to maintain
the current command interface, so that a command could be made
asynchronous simply by adding the decorator.

The introduction of the sync_command decorator allows us to satisfy
this objective, without requiring decorated methods to accept a
command_name. This patch modifies both decorators to no longer pass
the command_name argument, and modifies existing command methods not
to expect one.

Closes-Bug: #1308021
Change-Id: I1b33bb7519588cdcb79c6f4d2b10c1e5e8c0cca3
Merge "Decorated commands no longer take command_name"
Merge "Deprecated extension name attribute"
Use docker import/export to make image smaller

Using docker export gives us only the top filesystem layer and not all
the layers used to build. Resulting image is about 20% smaller. Further
optimizations will be made in future commits via removing build time
deps and temporary files in the Dockerfile.

Change-Id: I0f7ad6d00c6f47836dcd71b05907076701bb2789
(cherry picked from commit 99dba22eaa3961234abde1294e55026fd2cc9d4d)
Better documentation and defaults for coreos image

The existing coreos image required 20G+ of RAM, which isn't reasonable.
Also there was no documentation about how to get the image running, so a
sample configuration with iPXE was added. These changes are required to
help folks who want to use the agent now.

Change-Id: I845bebf17c62653521282863d596ac512dd6b82e
Fix wait argument on POST

Its type was not declared. Adds tests for this.

Change-Id: Iba05ce38f7548cc8400ac78493ef16b5e69905bb