Inter-Widget Communication for Personal Learning Environments: Methods and Software Artifacts