Tagged pointer and result pointer implementation

https://gist.github.com/urisinger/7dba254884a9857a9b60c51a862027f0

The implementation has 3 modes that it chooses depending on the pointer alignment, size of type, and architecture(currently only x86_64 supports high bits), it can either use the alignment bits, high bits, or both.