ARROW-4376: [Rust] Implement from_buf_reader for csv::Reader
ARROW-4376: [Rust] Implement from_buf_reader for csv::Reader

Update to allow the csv reader to work with anything that implements the `Read` trait.

Also adds a new constructor `from_buf_reader`.  Although 90% of use cases will just read a csv file on disk there are some situations where to need to pre-process or otherwise adjust the data before sending it to the csv reader.

Author: Paddy Horan <paddyhoran@hotmail.com>

Closes #3508 from paddyhoran/from_buf_reader and squashes the following commits:

2fe08693 <Paddy Horan> Added `from_buf_reader` and made `Reader` generic over `Read`

tebeka/arrow,itaiin/arrow,renesugar/arrow,laurentgo/arrow,majetideepak/arrow,apache/arrow,cpcloud/arrow,icexelloss/arrow,apache/arrow,pcmoritz/arrow,renesugar/arrow,icexelloss/arrow,icexelloss/arrow,xhochy/arrow,apache/arrow,xhochy/arrow,pcmoritz/arrow,laurentgo/arrow,apache/arrow,laurentgo/arrow,icexelloss/arrow,itaiin/arrow,icexelloss/arrow,icexelloss/arrow,renesugar/arrow,pcmoritz/arrow,kou/arrow,laurentgo/arrow,apache/arrow,cpcloud/arrow,renesugar/arrow,itaiin/arrow,renesugar/arrow,renesugar/arrow,tebeka/arrow,cpcloud/arrow,wesm/arrow,tebeka/arrow,pcmoritz/arrow,xhochy/arrow,xhochy/arrow,itaiin/arrow,itaiin/arrow,pcmoritz/arrow,tebeka/arrow,kou/arrow,wesm/arrow,cpcloud/arrow,cpcloud/arrow,cpcloud/arrow,pcmoritz/arrow,xhochy/arrow,icexelloss/arrow,kou/arrow,apache/arrow,cpcloud/arrow,majetideepak/arrow,apache/arrow,itaiin/arrow,majetideepak/arrow,pcmoritz/arrow,apache/arrow,itaiin/arrow,renesugar/arrow,kou/arrow,laurentgo/arrow,renesugar/arrow,majetideepak/arrow,pcmoritz/arrow,icexelloss/arrow,pcmoritz/arrow,kou/arrow,majetideepak/arrow,tebeka/arrow,wesm/arrow,pcmoritz/arrow,laurentgo/arrow,itaiin/arrow,wesm/arrow,laurentgo/arrow,tebeka/arrow,xhochy/arrow,apache/arrow,kou/arrow,renesugar/arrow,majetideepak/arrow,itaiin/arrow,laurentgo/arrow,laurentgo/arrow,xhochy/arrow,apache/arrow,itaiin/arrow,pcmoritz/arrow,xhochy/arrow,icexelloss/arrow,apache/arrow,renesugar/arrow,cpcloud/arrow,cpcloud/arrow,majetideepak/arrow,kou/arrow,majetideepak/arrow,renesugar/arrow,renesugar/arrow,majetideepak/arrow,cpcloud/arrow,wesm/arrow,cpcloud/arrow,xhochy/arrow,laurentgo/arrow,pcmoritz/arrow,majetideepak/arrow,pcmoritz/arrow,kou/arrow,wesm/arrow,wesm/arrow,kou/arrow,icexelloss/arrow,wesm/arrow,itaiin/arrow,majetideepak/arrow,tebeka/arrow,apache/arrow,xhochy/arrow,icexelloss/arrow,wesm/arrow,xhochy/arrow,wesm/arrow,kou/arrow,laurentgo/arrow,icexelloss/arrow,wesm/arrow,icexelloss/arrow,tebeka/arrow,kou/arrow,renesugar/arrow,apache/arrow,cpcloud/arrow,majetideepak/arrow,tebeka/arrow,itaiin/arrow,majetideepak/arrow,kou/arrow,kou/arrow,wesm/arrow,kou/arrow,laurentgo/arrow,icexelloss/arrow,itaiin/arrow,laurentgo/arrow,wesm/arrow,itaiin/arrow,laurentgo/arrow,renesugar/arrow,pcmoritz/arrow,xhochy/arrow,majetideepak/arrow,pcmoritz/arrow,xhochy/arrow,xhochy/arrow,wesm/arrow,renesugar/arrow,apache/arrow,cpcloud/arrow,cpcloud/arrow,majetideepak/arrow,itaiin/arrow,laurentgo/arrow,xhochy/arrow,tebeka/arrow