Preserve previous usb state when suspending / restore on resume

A suspended device would not recover correctly after a USB suspend/resume event. The USB code from STM didn't track the previous state and would leave the device USB_SUSPENDED. I haven't gone too far into how the suspend works, but this should do it for both INTERNAL and EXTERNAL resumes.