Refactor FilesystemStream

FilesystemStream

- Add delete() method
- Make close() return boolean

FilesystemStreamRegistry

- Implement FilesystreamStreamRegistry to handle act as proxy for stream_wrapper_register(), stream_wrapper_unregister() and stream_get_wrappers() functions
- Rename FilesystemStreamInterface::getProtocol() to getWrapper()
- Move  FilesystemStreamInterface::isSupported() to FilesystemStreamWrapperRegistry
- Move  FilesystemStreamInterface::isRegistered() to FilesystemStreamWrapperRegistry
- Move FilesystemStreamInterface::getWrappers() to FilesystemStreamWrapperRegistry

FilesystemStreamWrapper

- Remove register() method
- Remove unregsiter() method
- Remove isRegistered() method
- Rename getProtocol() method to getName() and make method static

FilesystemStreamWrapperBuffer

- Improve temporary file and directory implementation.
- Add getTemporaryFile() method
- Add getTemporaryDirectory() method.
Use FilesystemStream with buffer wrapper

- Add getStream() method
- Add setStream() method.
- Register buffer stream wrapper by default through getStream.
Add buffer wrapper through the stream constructor.
Fixed typo
Add toString to interface and make __toString() final.
Rename getData() to getMetaData() and setData() to setMetaData().
Rename params option to context.
Fixed typo