Be smarter about fallback projects

This is for #6505 and fixes 2 problems:
A. Try to revert to previous project instead of going straight to Getting Started folder.
B. Use Brackets source folder instead of getting caught in infinite loop when Getting Started folder has been deleted.

**Current flow**:
If project fails to load, we show modal error message dialog (as we always have done), and then:

1. Get previous project path from MRU list, or use Getting Started folder if there are no previous projects.
2. If path from step 1 doesn't exist, use Brackets source folder which is guaranteed to exist.

We do not cycle through the entire project MRU list [as proposed](https://github.com/adobe/brackets/issues/6505#issuecomment-41335593) because it's asynchronous, and reverting to previous project is probably the 80-90% case. All previous projects remain in recent project list, so user can easily select any of them.

We do not explicitly prompt -- that seems to adds more complexity to code and may confuse user even more.

this pattern is almost what's in `Async.doSequentially`  you could write a variation of this in Async.js which stops when the inner promise resolves:

```javascript
    function findSequentially(items, beginProcessItem) {

        var masterDeferred = new $.Deferred(),
            hasFailed = false;
        
        function doItem(i) {
            if (i >= items.length) {
                masterDeferred.reject();
                return;
            }
            
            beginProcessItem(items[i], i)
                .fail(function () {
                    doItem(i + 1);
                });
               .done(function () {
                   masterDeferred.resolve();
                });

        doItem(0);
        return masterDeferred.promise();
    }
```