Asset Encoding Negotiation

Part of #569.

cc @nevir cause you seemed interested.
encoding -> charset?