Fix parameter matching for functions with __attribute__

In the current implementation, there is an issue with the bracket matching if you declared on your function any [GCC / LLVM attributes](http://nshipster.com/__attribute__/) as the example below.
Furthermore I *refactored* the unit tests a bit, as they didn't actually test the real implementation. Now they do.

#### Before
```
/**
 *  <#Description#>
 *
 *  @param n) __attribute__((const) <#n) __attribute__((const) description#>
 *
 *  @return <#return value description#>
 */
int square(int n) __attribute__((const));
```

#### Now

```
/**
 *  <#Description#>
 *
 *  @param n <#n description#>
 *
 *  @return <#return value description#>
 */
int square(int n) __attribute__((const));
```