package_patch (simple version)

Cherry picking the earlier version of #1679 
It makes me sad to have to ask this, but anyone know if it's safe to pass the same context dict to package_show then package_update? I believe the answer is "no", but I'm not sure what the best approach is. Maybe filter keys we know will cause problems (like 'schema') and pass a shallow copy of the context dict to package_show so that nothing inserted causes a problem for package_update