Make library more generic

Added a top level Tuple type and function which scans for all annotated declarations in a given scope.

Did not deprecate any of the existing methods as per discussion on #1