move level logic from Buffer.as to Loader.as
change rate adaptation algorithm :
bitrate change is not restricted to one level anymore

take current buffer size into account :
rationale is as below : let say frag duration is 10s, remaining buffer is 2s.
in such case if we want to avoid buffer underrun, we need to download next fragment
in less than 2s. so the bandwidth needed to do so should be bigger than _levels[j].bitrate / (2/10)
on the other hand, if buffer size is greater than a fragment duration
(let say 20s of buffer, 10s for fragment duration, we could download with a level which
bitrate is bigger than previously measured bandwidth ... but we need to cap it a little bit
to avoid too many level switching, lets cap relative progress to 1.2