[Fixes #429] FileResult

1) Implemented FilePathResult to efficiently return files from disk.
2) Implemented FileStreamResult to return content from a stream.
3) Implemented FileContentResult to return content from a byte array.
After talking to @yishaigalatzer we are not doing this. Setting the Content-Length is a host behavior and If the user wants to do it, he can provide a middleware that buffers the response and does it for him.