check  if graphicsDevice._d3dDevice.NativePointer == null

fix for issue #3206.
When WP8 resume an WindowsPhoneGameWindow.Page_OrientationChanged event
might occur too early before the device gets updated. I that case
graphicsDevice._d3dDevice.NativePointer is null and
graphicsDevice._d3dDevice.FeatureLevel fails.

I moved outside the try/catch block to make the code readable and to
handle all possible sources of exceptions.
During initialization, Device.GetSupportedFeatureLevel() will be called to get the card generation. The right way is to always use Device.GetSupportedFeatureLevel() and reset the device whenever the profile change.
https://github.com/mono/MonoGame/blob/develop/MonoGame.Framework/Graphics/GraphicsDevice.cs#L408
Until we implement and test this we are not allowed to set a profile higher than the one on the current device.