[ci no changelog needed]
[Task link](https://www.pivotaltracker.com/story/show/181445628).
This PR implements a Breadcrumbs panel for the new component browser.
The Breadcrumbs is a horizontal list of text labels separated by a special icon and has an optional ellipsis icon at the end.
It is implemented using the new GridView component.
Video:
Demo of adding new breadcrumbs, scrolling behavior, and selecting breadcrumbs with the mouse.
https://user-images.githubusercontent.com/6566674/189199432-77807cef-00dc-4abe-b95c-b17a536f59f6.mp4
Demo of selecting breadcrumbs with keyboard shortcuts:
https://user-images.githubusercontent.com/6566674/189199603-53e55335-73ba-4ed7-8291-4455144c06aa.mp4
# Important Notes
- This PR implements an old interaction of the design of the component browser. The new design of the breadcrumbs can not be easily integrated into the current look of the component browser, so we would need to update styles later. It should be a relatively simple task. *The implementation uses color from the new design though. (but not fonts and sizes)*
- I found a bug in the grid view implementation that causes panics at runtime in some conditions. The reason is triggering FRP endpoints while constructing new entries. This issue is fixed in the PR.
A semi-manual s/this/self appied to the whole standard library.
Related to https://www.pivotaltracker.com/story/show/182328601
In the compiler promoted to use constants instead of hardcoded
`this`/`self` whenever possible.
# Important Notes
The PR **does not** require explicit `self` parameter declaration for methods as this part
of the design is still under consideration.
* refactor: remove invalid comment in ide/lib.rs
* refactor: current_project() returns Option
* refactor: create IDE controller without project
* refactor: handle missing project param in Cloud environment
* refactor: store project name in searcher
So no need in current_project call
* chore: apply rustfmt
* chore: fix tests
* refactor: rename maybe_project_name to project_name
* refactor: move project_name to BackendService::LanguageServer
* refactor: do not use early return in integration.rs
* refactor: use CloneCell instead of RefCell for current_project
* refactor: store model::Project in Searcher controller
* refactor: use expect instead of unwrap in searcher tests
* feat: add new_with_project_model constructor for desktop controller
It might be useful in tests
* chore: fix searcher tests