Use HTML5 push state and Ajax to load page content, and gracefully fallback if push state is not supported.