Add a class for handling shortcodes

For a better, DRYer future.

See #196
Shortcode error handler: support WP_Error objects

Also refactors `if` logic to be more straightforward.

See #196
Shortcode handler classes for points shortcodes

In the interest of DRYer code, we’ve introduced shortcode handler
classes. Now we’re using them for the points shortcodes.

See #196
Auto-register shortcodes with add_shortcode()

Provides a method that automatically handles the execution of the
registered shortcodes. We’re really DRY now!

See #196
Deprecate the old points shortcode functions

They are no longer needed, now that shortcode registration and
execution is automatically handled by the `WordPoints_Shortcodes` class.

See #196
Add a shortcode to display a user's rank

Fixes #196
The verify_atts() method can return a WP_Error

See #196
Don't use deprecated shortcode function in tests

See #196
Include the correct file

This was causing a fatal error in our uninstall tests because the
shortcode classes of the points component were being loaded
unnecessarily.

See #196, #138
Merge branch 'issue-196'
Late escaping for the shortcode error handler

Fixes #223
Run updates from just previous version in tests

Fixes #219
Have components table caption be a caption element

Fixes #207
Better uninstall for the ranks component

Updates the uninstallation tester to get the latest bug fix.

Fixes #218