Arrange member groups depending on their availability

### Purpose

Currently we have strict `StandardPanel` UI. Screenshot is presented below:
![strict sp](https://cloud.githubusercontent.com/assets/8158551/4111773/55c0090c-3212-11e4-9f8f-36921ee50528.png).
At top situated Create members list, at bottom Query and Actions lists.

But some of classes don't have Create members and/or Query members. Additionally to current view we should support next possible views of StandardPanel.

### View 1

![sp view 1](https://cloud.githubusercontent.com/assets/8158551/4111798/12208612-3213-11e4-8404-bea6021adbdf.PNG)

### View 2

The same as View 1 but without Query members. Only Actions.

### Other Views

Also possible variations when we have Create members but don't have Queries. We have only Queries and etc.

All possible situations should be taken into account. View of `StandardPanel` should be changed.

### Modifications

The correct view should be built only once. For this purpose `DataContextChanged` event of `StandardPanel` is used.

It is proposed break view on two logical units: `topCategoryList` and `addCategoryList` with their headers. Binding to data is done in code. `addCategoryList` header is filled dynamically depending on `CreateMembers`, `ActionMembers` and `QueryMembers` collections members availabilty.

### Reviewers

@Benglin, please review whole idea. For now the code is rough. Style switching will be provided in near future in this PR.
 
There are two problems in above codes:

1. A cast to ```List``` from ```IEnumerable``` is not needed, there is ```IEnumerable.Count()``` method.
2. Using ```IEnumerable.Count()``` is slow, now we just want to know if the list is empty, a much faster way:

    ```cs
    bool isCreateListEmpty = !class.Info.CreateMembers.Any();
    ```