When evaluating whether an allocated type contains a pointer to generate
the `alloc_token` metadata, `typeContainsPointer` incorrectly stopped
recursion upon encountering an `AtomicType`. This resulted in types like
`_Atomic(int *)` (or `std::atomic<int *>` under libc++) being
incorrectly evaluated as not containing a pointer.
Add support for `AtomicType` in `typeContainsPointer` by recursively
checking the contained type.
Add tests for structs containing `_Atomic(int *)` and `_Atomic(int)`.