Adding CLI support and tests for Activation Keys.
Added more tests for Activation Keys via CLI.

Associating Activation Keys to Lifecycle Environments via CLI.

Results shown (using smoke=1):

```bash
$ nosetests -c robottelo.properties tests/foreman/cli/test_activationkey.py
2014-05-23 13:26:45 - robottelo - INFO - Paramiko instance prepared (and would be reused): 0x10f887110
@Feature: Activation key - Host ... SKIP: Test not implemented
@Feature: Activation key - Product ... SKIP: Test not implemented
@Feature: Activation key - Product ... SKIP: Test not implemented
@Feature: Activation key - Product ... SKIP: Test not implemented
@Feature: Activation key - Manifest ... SKIP: Test not implemented
@Feature: Activation key - End to End ... SKIP: Test not implemented
@Feature: Activation key - info ... SKIP: Test not implemented
@Feature: Activation key - info ... SKIP: Test not implemented
@Feature: Activation key - list ... SKIP: Test not implemented
@Feature: Activation key - list ... SKIP: Test not implemented
@Feature: Activation key - System ... SKIP: Test not implemented
@Feature: Activation key - Negative Create ... SKIP: Test not implemented
@Feature: Activation key - Negative Create ... SKIP: Test not implemented
@Feature: Activation key - Negative Create ... SKIP: Test not implemented
@Feature: Activation key - Positive Delete ... SKIP: Test not implemented
@Feature: Activation key - Negative Update ... SKIP: Test not implemented
@Feature: Activation key - Negative Update ... SKIP: Test not implemented
@Feature: Activation key - Negative Update ... SKIP: Test not implemented
@Test: Create Activation key for all variations of Activation key name ... ok
@Test: Create Activation key for all variations of Description ... ok
@Feature: Activation key - Positive Create ... SKIP: Test not implemented
@Feature: Activation key - Positive Create ... SKIP: Test not implemented
@Feature: Activation key - Positive Create ... SKIP: Test not implemented
@Feature: Activation key - Positive Create ... SKIP: Test not implemented
@Feature: Activation key - Positive Create ... SKIP: Test not implemented
@Test: Create Activation key and associate with Library environment ... ok
@Test: Create Activation key and associate with environment ... ok
@Feature: Activation key - Positive Delete ... SKIP: Test not implemented
@Feature: Activation key - Positive Delete ... SKIP: Test not implemented
@Feature: Activation key - Positive Delete ... SKIP: Test not implemented
@Feature: Activation key - Positive Delete ... SKIP: Test not implemented
@Feature: Activation key - Positive Delete ... SKIP: Test not implemented
@Feature: Activation key - Positive Delete ... SKIP: Test not implemented
@Feature: Activation key - Positive Update ... SKIP: Test not implemented
@Feature: Activation key - Positive Update ... SKIP: Test not implemented
@Feature: Activation key - Positive Update ... SKIP: Test not implemented
@Feature: Activation key - Positive Update ... SKIP: Test not implemented
@Feature: Activation key - Positive Update ... SKIP: Test not implemented
@Feature: Activation key - Positive Update ... SKIP: Test not implemented
@Feature: Activation key - search ... SKIP: Test not implemented
@Feature: Activation key - search ... SKIP: Test not implemented
@Feature: Activation key - Usage limit ... SKIP: Test not implemented

----------------------------------------------------------------------
XML: foreman-results.xml
----------------------------------------------------------------------
Ran 42 tests in 150.875s

OK (SKIP=38)
```
Merge pull request #855 from omaciel/cli-ackeys-tests

Cli ackeys tests
Fix CLI OS test_info_1 test
Improve info_dictionary helper

Improve info_dictionary helper to parse single attribute collection
properties
Fix CLI OS test_add_architecture test
Fix CLI OS test_add_configtemplate test
Fix CLI OS test_add_ptable test
Merge pull request #856 from elyezer/fix-cli-os-tests

Fix cli os tests
Make sure that max-content-host data is unpacked.

CLI test for host collection had been failing for a while because the
value passed from @data to represent max-content-host was not being
'unpacked' correctly, and therefore the entire list was being used. As
per @elyezer advice, I also switched from using a List to a Tuple. This
should fix the following error with latest code build:

```bash
2014-05-29 14:29:19 - robottelo - DEBUG - Running test TestHostCollection/test_positive_update_3_1__3__6__9__12__15__17__19_
2014-05-29 14:29:19 - robottelo - DEBUG - >>> LANG=en_US hammer -v -u admin -p changeme  --output csv host-collection create --organization-id='48' --name='ieiCYVtUtrFSJrl'
2014-05-29 14:29:24 - robottelo - DEBUG - <<< [u'Message,Id,Name', u'Host collection created,7,ieiCYVtUtrFSJrl', u'']
2014-05-29 14:29:24 - robottelo - DEBUG - >>> LANG=en_US hammer -v -u admin -p changeme  host-collection info --id='7'
2014-05-29 14:29:28 - robottelo - DEBUG - <<< [u'ID:                  7', u'Name:                ieiCYVtUtrFSJrl', u'Limit:               -1', u'Description:         ', u'Total Content Hosts: 0', u'Max Content Hosts:   -1', u'', u'']
2014-05-29 14:29:33 - robottelo - DEBUG - >>> LANG=en_US hammer -v -u admin -p changeme  host-collection info --id='7'
2014-05-29 14:29:37 - robottelo - DEBUG - <<< [u'ID:                  7', u'Name:                ieiCYVtUtrFSJrl', u'Limit:               -1', u'Description:         ', u'Total Content Hosts: 0', u'Max Content Hosts:   -1', u'', u'']
2014-05-29 14:29:37 - robottelo - DEBUG - >>> LANG=en_US hammer -v -u admin -p changeme  --output csv host-collection update --max-content-hosts='[3, 6, 9, 12, 15, 17, 19]' --id='7' --organization-id='48'
2014-05-29 14:29:42 - robottelo - DEBUG - <<< [ERROR 2014-05-29 14:29:40 API] 422 Unprocessable Entity
{
            "errors" => {
        "content_host_limit" => [
            [0] "must be a positive integer value.",
            [1] "may not be set to 0."
        ]
    },
    "displayMessage" => "Validation failed: Content host limit must be a positive integer value., Content host limit may not be set to 0."
}
[ERROR 2014-05-29 14:29:40 Exception] Validation failed: Content host limit must be a positive integer value., Content host limit may not be set to 0.
Could not update the the host collection:
  Validation failed: Content host limit must be a positive integer value., Content host limit may not be set to 0.
[ERROR 2014-05-29 14:29:40 Exception]

RestClient::UnprocessableEntity (422 Unprocessable Entity):
    /usr/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/abstract_response.rb:48:in `return!'
    /usr/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:230:in `process_result'
    /usr/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:178:in `transmit'
    /usr/lib/ruby/1.8/net/http.rb:543:in `start'
    /usr/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:172:in `transmit'
    /usr/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:64:in `execute'
    /usr/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/request.rb:33:in `execute'
    /usr/lib/ruby/gems/1.8/gems/rest-client-1.6.7/lib/restclient/resource.rb:80:in `put'
    /usr/lib/ruby/gems/1.8/gems/apipie-bindings-0.0.8/lib/apipie_bindings/api.rb:195:in `send'
    /usr/lib/ruby/gems/1.8/gems/apipie-bindings-0.0.8/lib/apipie_bindings/api.rb:195:in `http_call'
    /usr/lib/ruby/gems/1.8/gems/apipie-bindings-0.0.8/lib/apipie_bindings/api.rb:151:in `call'
    /usr/lib/ruby/gems/1.8/gems/apipie-bindings-0.0.8/lib/apipie_bindings/resource.rb:14:in `call'
    /usr/lib/ruby/gems/1.8/gems/hammer_cli-0.1.1/lib/hammer_cli/./apipie/command.rb:42:in `send_request'
    /usr/lib/ruby/gems/1.8/gems/hammer_cli_foreman-0.1.1/lib/hammer_cli_foreman/commands.rb:113:in `send_request'
    /usr/lib/ruby/gems/1.8/gems/hammer_cli-0.1.1/lib/hammer_cli/./apipie/command.rb:33:in `execute'
    /usr/lib/ruby/gems/1.8/gems/clamp-0.6.2/lib/clamp/command.rb:67:in `run'
    /usr/lib/ruby/gems/1.8/gems/hammer_cli-0.1.1/lib/hammer_cli/./apipie/../abstract.rb:22:in `run'
    /usr/lib/ruby/gems/1.8/gems/clamp-0.6.2/lib/clamp/subcommand/execution.rb:11:in `execute'
    /usr/lib/ruby/gems/1.8/gems/clamp-0.6.2/lib/clamp/command.rb:67:in `run'
    /usr/lib/ruby/gems/1.8/gems/hammer_cli-0.1.1/lib/hammer_cli/./apipie/../abstract.rb:22:in `run'
    /usr/lib/ruby/gems/1.8/gems/clamp-0.6.2/lib/clamp/subcommand/execution.rb:11:in `execute'
    /usr/lib/ruby/gems/1.8/gems/clamp-0.6.2/lib/clamp/command.rb:67:in `run'
    /usr/lib/ruby/gems/1.8/gems/hammer_cli-0.1.1/lib/hammer_cli/./apipie/../abstract.rb:22:in `run'
    /usr/lib/ruby/gems/1.8/gems/clamp-0.6.2/lib/clamp/command.rb:125:in `run'
    /usr/lib/ruby/gems/1.8/gems/hammer_cli-0.1.1/bin/hammer:100
    /usr/bin/hammer:19:in `load'
    /usr/bin/hammer:19
```
Merge pull request #858 from omaciel/dont-unpack-values

Make sure that max-content-host data is unpacked.
Improve info_dictionary list attrs parser
Update CLI OS tests

Update test_add_architecture, test_add_configtemplate and
test_add_ptable
Merge pull request #859 from elyezer/info-dict

Improve info_dictionary list attrs parser
Max Content Hosts data passed as string.

Host Collection tests for max content hosts via the CLI were failing
during the assertion because it was comparing an integer to a string.
Merge pull request #860 from omaciel/limit-data-as-strings

Max Content Hosts data passed as string.
Organization deletion by ID, Name and Label.

Updated test that deleted organization by ID to use the organization ID
instead of its name, now that you can be specific about deleting by
either ID, Name, or Label via the CLI. Also removed Bugzilla decorator
and added individual tests for each test.

```bash
$ nosetests -c robottelo.properties tests/foreman/cli/test_org.py:TestOrg.test_bugzilla_1076568_1 tests/foreman/cli/test_org.py:TestOrg.test_bugzilla_1076568_2 tests/foreman/cli/test_org.py:TestOrg.test_bugzilla_1076568_3
2014-06-03 10:17:58 - robottelo - INFO - Paramiko instance prepared (and would be reused): 0x1037258d0
@test: Delete organization by name ... ok
@test: Delete organization by ID ... ok
@test: Delete organization by label ... ok

----------------------------------------------------------------------
XML: foreman-results.xml
----------------------------------------------------------------------
Ran 3 tests in 96.847s

OK
```

and

```bash
$ nosetests -c robottelo.properties -m test_positive_delete_1 tests/foreman/cli/test_org.py
2014-06-03 10:20:29 - robottelo - INFO - Paramiko instance prepared (and would be reused): 0x10ddcf910
@test: Create organization with valid values then delete it ... ok

----------------------------------------------------------------------
XML: foreman-results.xml
----------------------------------------------------------------------
Ran 1 test in 30.862s

OK
```
Merge pull request #861 from omaciel/fix-org-delete

Organization deletion by ID, Name and Label.
Expose the TimeOut argument for CLI commands.

There are some CLI actions, such as content view promotions, can take a
bit longer to return and the default timeout of 50 seconds, which was
not exposed, was not long enough for some of our tests.

I have exposed the (optional) timeout argument via CLI's base class.
Also, I have set a default timeout of 120 seconds for content view
publishing for this PR.
Merge pull request #862 from omaciel/expose-timeout-to-cli

Expose the TimeOut argument for CLI commands.