I think 8 bytes here is  too small, we'll end up explicitly allocating storage all the time, thus defeating the point of using a `SmallVector`.

What I think we should do here, and what I did when I played with this, was add a SmallString member to the AST's `Declaration` so that we can cache the computed USR symbol. See https://gist.github.com/tritao/46efd8b545e4f6833f37.

Though now that I see the code it seems I used a regular `std::string` as a member in `Declaration`. For efficiency, it'd be best to use `SmallString` to not allocate memory in the common case.