Add BaseArticle abstract model

@meshy Review?