Added relationship function to User class to handle the followers-followed relationship.
Let A->B means A follows B. The relationship is defined from the left side entity with the name followed. When we query this relationship from the left side we will get the list of followed users.
1. 'User' arg is a right side entity in the relationship (left side entity being the parent class). Self-referential relationship asks for the same class on both sides.
2. secondary arg indicates that an association table is used for this relationship.
3. primaryjoin arg indicates the condition on which the left side entity is joined with the association table. As followers is not a model subclass, the syntax is a bit different here.
4. secondaryjoin arg links the right side entity with the association table (followed user).
5. backref arg defines how relationship is accessed from right side entity. For a given user, query named 'followed' returns all right side users that have target user on the left side. The back reference is called 'followers', and returns left side users for a target right side user in the right side. 'lazy' defines execution mode for the query, and 'dynamic' setting allows us to not let the query run until requested.
6. 'lazy' again.