Add the std.idioms module - a common idioms library.

Here is the forum discussion about this module suggestion: http://forum.dlang.org/thread/fofbrlqruxbevnxchxdp@forum.dlang.org

And here are the ddocs: http://someboddy.github.io/phobos/ddocs/for-idioms/idioms.html

Currently 2 idioms are implemented:

* Properties - Generate property getter and setter accessors member fields.
* Singleton -  Turns the class into a singleon.

#### `Properties` usage:
```D
class Foo
{
    mixin Properties!q{
        @Asserting("a < 10") int x;
        @Enforcing("a <= x") int y;
    };
}
```
This will create in the class `Foo` two property fields - `x` and `y`, where `x`'s setter will `assert` that any new value is smaller than `10`, and `y`'s setter will check that any new value is smaller or equal to the current value of `x` and throw a `PropertyException` otherwise.

#### `*Singleton` usage:
```D
class Foo
{
    mixin ThreadLocalSingleton;
}
class Bar
{
    mixin SharedSingleton;
}
class Baz
{
    mixin _GSharedSingleton;
}
```
This will turn `Foo`  into a thread local singleton(each thread will have it's own instance), and `Bar` and `Baz` into global singletons(all threads access the same instance). Both `Bar` and `Baz` will use David Simcha's and Alexander Terekhov's low lock singleton implementation approach for initialization, but while `Bar` will use D's `shared` to ensure thread safety with the usage of the instance, `Baz` will have thread safety enforced by the idiom - the users will have to do it themselves.