[Ide] Check for a null buttons array to avoid blowing up

This is a valid value so we should check for that in addition
to checking that the array is of length 0.

We now show crash dialogs again.
[Core] Make FileSystemService.MoveFile not throw an exception every time

We were invoking File.Move twice.

With tests.