add chunking logic for more efficient large file reading

```
, ,    ,      ,    ,     ,     ,   ,      ,     ,     ,      ,      ,     
,       ,     ,    ,       ,   .____. ,   ,     ,      ,       ,      ,     
 ,    ,   ,    ,     ,   ,   , |   :|         ,   , ,   ,   ,       , 
   ,        ,    ,     ,     __|====|__ ||||||  ,        ,      ,      ,    
 ,   ,    ,   ,     ,    , *  / o  o \  ||||||,   ,  ,        ,    ,
,   ,   ,         ,   ,     * | -=   |  \====/ ,       ,   ,    ,     ,    
   ,  ,    ,   ,           , U==\__//__. \\//    ,  ,        ,    , 
,   ,  ,    ,    ,    ,  ,   / \\==// \ \ ||  ,   ,      ,          ,  
 ,  ,    ,    ,     ,      ,|    o ||  | \||   ,      ,     ,   ,     ,     
,      ,    ,    ,      ,   |    o ""  |\_|B),    ,  ,    ,       , 
  ,  ,    ,   ,     ,      , \__  --__/   ||  ,        ,      ,     ,   
,  ,   ,       ,     ,   ,  /          \  ||,   ,   ,      ,    ,    ,
 ,      ,   ,     ,        |            | ||      ,  ,   ,    ,   ,  
,    ,    ,   ,  ,    ,   ,|            | || ,  ,  ,   ,   ,     ,  ,   
 ------_____---------____---\__ --_  __/__LJ__---------________-----___

```

MERRY HOLIDAYS!

This pull request does some things:

- defaults to `arraybuffer` for reads. this is because now with browserify 3 you can only write `Buffer` objects to streams
- because of this, it automatically converts ArrayBuffers into Buffers
- it also adds logic to read the file in chunks. this keeps the browser from crashing

I tested it by dropping a entire folder full of mp3s onto a page and piping them over a single binary websocket to node, and it worked great!