There is a new blog post on how to track such websites and web apps here: https://piwik.org/blog/2017/02/how-to-track-single-page-websites-using-piwik-analytics/
I think it could be much simplified eg instead of calling those methods depending on what features are enabled:
MediaAnalytics::scanForMedia FormAnalytics::scanForForms trackContentImpressionsWithinNode enableLinkTracking
One could simply call one method and depending on which features are enabled, they will all scan the DOM for updates content.
Also when calling trackPageView or another new method we could automatically reset custom variables in scope page, referrer, generation time etc.