Adding a object interface to the __salt__ dictionary

This is another suggestion from @mgwilliams. It adds an object to the
sls file scope named Salt, which dispatches its attributes to the
__salt__ dictionary.

For example, the following two lines are functionally the same:

    ret = Salt.cmd.run(bar)
    ret = salt['cmd.run'](bar)
Switch double to single quotes, fix pylint warning
Update tests to use new syntax
Add test for duplicates, now to fix it
Rebuild StateRegistry storage so IDs across modules work

As it stands the following will fail as we didn't allow duplicate IDs
under any circumstances:

    with Pkg.installed("nginx"):
    	Service.running("nginx")

This commit changes the way the StateRegistry stores states to allow the
above example to work properly.

Now it behaves much more closely to the YAML + Jinja renderer.
Allow standalone test execution