update priority calculation with source/sink supporting
  + stream is marked as entry stream if a source write on it
  + stream is marked as exit stream if a sink read from it
  + when calculating priority for an entry task, its input (entry)
  stream will not be counted. Similar for exit task, its output (exit)
  stream will not be counted.
support source/sink task & fix some bugs in lpel tests
  + support source/sink task, calculating priority does not count
  entry/exit stream
  + streams written by wrappers are entry streams, and read from
  wrappers are exit streams
  + entry streams are bounded to avoid
  + fix lpel tests: start lpel before creating task
Merge branch 'top_merge' into main_branch
Bug fixing: race condition in stream close/replace
 - in Lpel_hrc: stream close reset the prod_sd/cons_sd to NULL (so that
   the task can update its neighbor list). Stream replace also set a new
   prod_sd/cons_sd --> used lock and check if stream is repalced already
   then no need to set to NULL.
 - remove these features from lpel_decen as it does not use dynamic
   priority based on stream fill level
add radom priority function (13) for lpel hrc
trival bug:
  - acquire lock before destroy stream in case calculating task priority
    needs to retreive stream fill level
Merge pull request #19 from nguyenvuthiennga/main_branch

Support source/sink task & random priority & Fix some bugs
bug fix: priority cal access destroyed stream
 - while calculating priority, task may access a stream already
   destroyed by the other task of the stream
 - fix: when destroy stream, set the other task's stream point to NULL
Merge pull request #20 from nguyenvuthiennga/master

Bug Fix
Introduce new lock in stream & fix bug
 - use new lock (instead of reusing prod_lock) to support update prod_sd/cons_sd
 - fix bug: trivial, LpelStreamConsumer/Producer should check if stream
   is null
Merge pull request #21 from nguyenvuthiennga/master

new lock in stream and bug fixing