Thinking in Angular 2 - An overview of key Angular 2 concepts for JavaScript developers