Implement extended server syntax.

This syntax allows servers to be specified long-hand including properties.

The `role(:my_role, %w{example.com, example.org})` is convenient for batch
set-up of servers; but as SSHKit provides arbirtary properties on servers, it
might be handy to set up servers in long hand:

    server('example.com', roles: :my_role, my_property: "my_value")
    server('example.com', roles: [:my_role, :another], my_property: "my_value")
    server('example.com', roles: :my_role, primary: true)

This commit adds the ability to do this.