Add util function to send Google Analytics hits

gaSend() will send a Google Analytics hit to all enabled trackers
(e.g. global and tenant). It takes care of calling hitCallback
only when all hits have been acknowledged.
Add whenCalledOrAfter() to ensure callbacks are called

whenCalledOrAfter() wraps a callback function and calls it after
a specified number of milliseconds if it's not already been called.

The current use case is to wrap GA hitCallbacks for important things
like page redirects after an event has been acknowledged. e.g. we have
to wait for the event to send before redirecting otherwise it wouldn't
always hit GA, but we can't wait forever for GA to acknowledge it, so we
need to give up after a short time.
Enable the linkid Google Analytics extension

This is needed to track which link on a page sent a user to a
destination page in the case that there are multiple links to the same
page on a page. This happens in Avocet with our many links to the
upload page - we're interested in knowing how much each are used.
Change lingering /me link to /upload
Ensure /upload links have IDs

Most upload links are already in elements with IDs which will get
picked up by GA's linkid plugin.
Add oae.api.analytics to bootstrap/core
Add analytics tracking function for modals
Add analytics tracking function for buttons

All button clicks are automatically tracked.
Analytics: track opening modal* widgets
Analytics: Track modals opening in publication form
Add an ID to corresponding author form field

This is needed to differentiate the button click event from other
buttons on the page.
Add analytics tracking function for validation errors
Reporting for jQuery Validate validation errors

Analytics now provides an 'invalidHandler' compatible function which
can automatically report validation errors to Google Analytics.
Track validation errors in the publication form
Enhance publication form's validation event labels

By adding some data-ga-label attrs to significant elements the quality
of the reported event labels is improved.
Track file upload events in publication form

An event is sent which includes whether the upload was initiated
via a drag-drop or regular browse action. Also events for validation
errors and upload failures.
Label the confirmation widget for better GA events
Add analytics tracking function for virtual pageviews
Track a virtual pageview for form's 2nd section
Add analytics tracking for link clicks

External links and embargo links can be tracked.