Use Virtus for attributes

This sort-of depends on this pull request that will cause Virtus to call our initializer. Until that time, I've added a monkey patch that fixes the behaviour for the current release. This patch is locked to the specific version that needs it.