Support multiple item macros

Closes #4375
Clean up SmallVector use a bit