I was able to setup basic 3-way calling using in-built features designed for asterisk 12+. I did this simply by adding the following to /etc/asterisk/features_featuremap_custom.conf:
[general]
atxferthreeway = *42
atxferabort = #42
You initiate by starting a transfer via *2. The callee is placed on hold and you are presented with a dial tone. Dial the new number to bring into the 3-way call. Then once you are ready to bridge dial *42 (or whatever you defined above for atxferthreeway). To cancel the 3-way call and go back to the original call dial #42 (or whatever you defined above for atxferabort).
This uses features already defined as part of atxfer via asterisk. You can see other features defined by checking the features.conf.sample via https://github.com/asterisk/asterisk/blob/master/configs/samples/features.conf.sample