Is there a way to "virtually" rotate a face normal to get a different shade without actually rotating the face?
What you are looking for are generally called Split-Normals, these are normal values that are stored independent of the geometry they belong to.

Blender has built-in support for them, and even has a modifier that allows basic editing. It can be found in the Properties Window > Modifiers > Modify and is called Normal Edit modifier.

It  provides basic control, but as of version 2.78, as  far as I know it can't be manually controlled as you desired. To best of my knowledge there is no builtin way to manually adjust per-vertex or per-face normals in Blender natively.

There may be third party addons that do allow this though.

One such example is Blend4Web's normal editor. The addon's greater goal is completely different, but if you are willing to install its considerable size it does provide normal editing tools among its functionalities. It can be found under the 3D View > Toolshelf > Blend4Web Tab > Normal Editor.



EDIT Fresh from the news page, it seems that for GSOC 2017 there will be a project tackling normal editing