Implemented error handling for XBlock instances

Failed XBlock loads previously logged a warning that went nowhere. They are now stored in a list of failed XBlock instances (with their exception). @pmitros @nedbat 
This bug happened because this code is brittle. You have redundant state. You would be better off initializing failed_load and successful_loads to None, instead of empty lists. You check if they are not None: 

* If both are None, you want to load. 
* If neither is None, you want to return
* If you want to be super-careful, you can raise an exception if one or the other is None. This isn't critical. I'd probably just compare one or the other (less code == fewer things to test, less possibility for bugs, etc.).