Added caching layer

To improve performance, the `ApiDoc` metadata is being cached and automatically invalidated when any of the routing files and related controllers are updated.

Added a few tests for this. Please let me know if they are insufficient and how I can improve them.
:+1: