How to Think Like a Mathematician: A Companion to Undergraduate Mathematics