Detect -> accesses on uninitialized pointers

This detects `->` accesses via uninitialized pointers as discussed here https://github.com/danmar/cppcheck/pull/421#issuecomment-54943202

Some concerns:
* not at all sure the loop which traverses the AST until it finds a suitable parent is fast enough in generic cases
* one of the testcases now emits two warnings, both correct, which means that the test has to expect them is some specific order, I'm not sure if that's good
I told Dmitry-Me we would allow this warning.

If the pointer is uninitialized we write a normal message. If the pointer is null we write a inconclusive message.

As far as I know it's formally UB both for uninitalized pointer and null pointer, at least in C++. The C++ specification explicitly says that E1->E2 is the same as (*E1).E2 even if E2 is a static member.

I reasoned like this: Normally developers should use :: to call static methods. But in generic macros/templates code it sometimes makes sense to use -> instead so the generic code doesn't need the type and doesn't need to know if the method is static. As far as I know some developers use null pointers in such generic code. But I don't think that uninitialized pointers are used for this purpose.

Do you have comments about my reasoning?