BUGFIX fix incorrect results from timeit
BUGFIX fix incorrect results from timeit

* Timeit now computes the median time from a select number of trial runs that
  are synced after each iteration
* The median time is then used to compute how many batches of the functions to
  run based on some minimum time
* It now runs batch of trial runs and then averages the times from each batch

munnybearz/arrayfire,victorv/arrayfire,shehzan10/arrayfire,9prady9/arrayfire,ghisvail/arrayfire,munnybearz/arrayfire,9prady9/arrayfire,merlin-ext/arrayfire,marbre/arrayfire,victorv/arrayfire,9prady9/arrayfire,shehzan10/arrayfire,ghisvail/arrayfire,umar456/arrayfire,marbre/arrayfire,merlin-ext/arrayfire,arrayfire/arrayfire,arrayfire/arrayfire,munnybearz/arrayfire,umar456/arrayfire,ghisvail/arrayfire,arrayfire/arrayfire,victorv/arrayfire,ghisvail/arrayfire,marbre/arrayfire,arrayfire/arrayfire,merlin-ext/arrayfire,marbre/arrayfire,9prady9/arrayfire,shehzan10/arrayfire,victorv/arrayfire,shehzan10/arrayfire,umar456/arrayfire,merlin-ext/arrayfire,umar456/arrayfire