[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.
Like I mean its more than naming...even though downloading files is probably one of the most common use cases for stream results, we should have a separate result like `StreamResult` which shouldn't be tied up with FileResult as such...