Client-side Definition Refactor

The purpose of this PR is to make the client-side data available as soon as possible so that it can be used by other javascript before dom ready.
John you need this.