Fixed view recycling bug

Added getViewTypeCount() and getItemViewType() overrides so that two view types are available - one for full rows, and another for the last row with filler views. This prevents getItemView() sometimes being called for full rows with the wrong view type (and potential crashes if you expect the view to have a view holder in its tag for example).