Added style guide.

I looked around the codebase and wrote down what appeared to be the style conventions in use.
Yes. It's considerably easier to track down since it's at the actual site where we pass a null pointer.

Also, on the topic of "no pointers", it would be nice to see a lot more stack allocation where possible. That is, none of this:

    void doSomethingWithCard(Card *card);

    int main() {
        Card *card = new Card;
        doSomethingWithCard(card);
        delete card;
    }

since it's far too easy to cause memory leaks. In the majority of the cases I've seen, stack allocation would suffice, and it also plays nicely with reference syntax:

    void doSomethingWithCard(Card &card);

    int main() {
        Card card;
        doSomethingWithCard(card); // instead of &card if it took a pointer
    }

Then we get guaranteed destruction no matter how we exit the function (early return where we forgot to `delete`, exceptions, whatever).