This patch builds on top of the "extra flags" extension added in r307241.
It adds the ability to specify user-defined custom compilation command for an opened file through the LSP layer. This is a non-standard extension to the protocol.
The particular use-case is follows: our clients do not have a compilation database and will specify all compilation commands dynamically when a file is open.