This PR decouples the LS from direct file system access by implementing the proposals for workspace/files and textDocument/content under workspace/xfiles and textDocument/xcontent. The requests are only used when the client expressed support for them through ClientCapabilities, otherwise direct FS access is used.
This turns document content retrieval and recursive file search into async operations.
In turn, all server handlers can now operate async by returning a promise.
* Only hold content for open files in memory
* Add test for didClose
* Remove invalid URI formatting test
* Don't keep AST in memory
* Fix symbol search crash
* Change Project map to FQN => URI
Removes PhpDocument::load(), isLoaded(), unload()
* Add docblocks
* Rename some functions
* Extend documentation
* Correct docblock
* Implemented workspace symbol search
* Fixed missing TextEdit using declaration
* Fixed generating uri when parsing next file.
* Cleaned up code. Fixed tests
* Fixed PHPDoc for LanguageServer::initialize()
* Moved utility functions to utils.php
* Added tests for pathToUri and findFilesRecursive
* Added command line argument for socket communication
* Fixed local variable detection and containerName generation in SymbolFinder
* Fixed formatting in ProtocolStreamReader
* Store text content in PHPDocument, removed stmts, regenerate on demand
* Fixed local variable detection and containerName generation in SymbolFinder.
* Added Tests for Project and Workspace
* Added test for didChange event
* Modified lexer error handling
* Removed file that shouldn't have been committed.
* Updated sabre/event dependency to 4.0.0
* Updated readme.md to show tcp option
* make input stream non-blocking
* Correct code style
* Use triple equals
* Revert change in SymbolFinder
* Optimize processFile() a bit
* Use MessageType enum instead of number literal
* Add missing space
* Fixed ProtocolStreamWriter for nonblocking connection.
* Suppress fwrite() notice when not all bytes could be written.
* Fix another code style issue
* Throw Exceotion instead of Error
* Added ProtocolStreamWriter test
* Correct workspace/symbol documentation
* Improve exception in ProtocolStreamWriter::write()