Visual Studio attributed ATL support

* extend grammar: Visual Studio attributed ATL support
* add unit tests
* see #174

Because of usage of squared brackets for attributes there is no possibility to mock this with macro directives.

Example:

```C++
[module(name="MyModule")];
[emitidl(false)];

[export, helpstring("description")] enum MyEnum {};

[
    dispinterface,
    nonextensible,
    hidden,
    uuid("0815"),
    helpstring("description")
]
struct IMyInterface
{
    [id(1), helpstring("description")] HRESULT M1(int p1);
    [propget, id(DISPID_VALUE), helpstring("description")] HRESULT M2([in] VARIANT p1, [out, retval] MyService** p2);
};
```