Better cleanup logic for Project
Better cleanup logic for Project

* Before this change, if the constructor of Project threw an exception,
  cleanup() would be called and would fail

* This change doesn't register for a cleanup until all the parts have started

* Also, all exceptions in Project.__del__ are caught and reported

rec/BiblioPixel,ManiacalLabs/BiblioPixel,rec/BiblioPixel,ManiacalLabs/BiblioPixel,ManiacalLabs/BiblioPixel,ManiacalLabs/BiblioPixel,rec/BiblioPixel,rec/BiblioPixel