Cache cursor objects.

If a CXCursor object has already been mapped to a Cursor object,
this change returns that object instead of constructing a new one.

This allows any information gathered about the cursor to be
preserved, especially that done to fix compatibility issues.