Fix memory unaligned reads

Bug fix for unaligned memory reads. This corrects the issue with service port names being jumbled for certain demos.
Older ARM processsors load from unaligned addresses in a weird way (see http://www.heyrick.co.uk/armwiki/Unaligned_data_access for a brief summary of this, I couldn't find a better online explanation). Our ARM core (SkyEye) expects this, and corrects for it. So this code does the inverse of what SkyEye expects. We could potentially just disable both, but I'm not sure how safe that is. 

Furthermore, would you prefer wrapping this in an `if (addr & 3)`? That's probably better for performance.